From f845185fa1081e280d3a16326a7566f00ba39c2e Mon Sep 17 00:00:00 2001 From: Ende! Date: Mon, 16 Mar 2015 17:58:07 +0100 Subject: [PATCH] improved build when compiling shared libraries --- CMakeLists.txt | 15 ++++++++------- VerteronDisassemblerEngine/VXInternalConfig.h | 16 ++++++---------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5766517..6ef983b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,9 @@ cmake_minimum_required(VERSION 2.8.12) +include(GenerateExportHeader) project(VerteronDisassemblerEngine) -option(BUILD_SHARED "Build shared libraries rather than static ones" FALSE) +option(BUILD_SHARED_LIBS "Build shared libraries rather than static ones" FALSE) option(BUILD_EXAMPLES "Build examples" TRUE) option(BUILD_CPP_BINDINGS "Build C++ bindings" TRUE) @@ -38,12 +39,12 @@ set(vde_sources "VerteronDisassemblerEngine/VXOpcodeTable.c" "VerteronDisassemblerEngine/VXInstructionDecoder.c") -#if (BUILD_SHARED) -# add_definitions("-DVX_BUILD_SHARED") -# add_library("VerteronDisassemblerEngine" SHARED ${vde_headers} ${vde_sources}) -#else () - add_library("VerteronDisassemblerEngine" STATIC ${vde_headers} ${vde_sources}) -#endif () +add_library("VerteronDisassemblerEngine" ${vde_headers} ${vde_sources}) +generate_export_header( + "VerteronDisassemblerEngine" + BASE_NAME "VX" + EXPORT_FILE_NAME "VXExportConfig.h") +include_directories(${PROJECT_BINARY_DIR}) # C++ bindings if (BUILD_CPP_BINDINGS) diff --git a/VerteronDisassemblerEngine/VXInternalConfig.h b/VerteronDisassemblerEngine/VXInternalConfig.h index 536ed0c..b58f8b3 100644 --- a/VerteronDisassemblerEngine/VXInternalConfig.h +++ b/VerteronDisassemblerEngine/VXInternalConfig.h @@ -30,6 +30,12 @@ **************************************************************************************************/ +/* + * Include CMake generated header defining macros im-/exporting functions statically or + * dynamically depending what the user requested from CMake. + */ +#include "VXExportConfig.h" + #ifndef _VDE_VXINTERNALCONFIG_H_ #define _VDE_VXINTERNALCONFIG_H_ @@ -39,14 +45,4 @@ # define VX_INLINE extern inline #endif -#ifdef VX_BUILD_SHARED /* set by CMake */ -# if defined(_MSC_VER) -# define VX_EXPORT __declspec(dllexport) -# elif defined(__GNUC__) || defined(__clang__) -# define VX_EXPORT __attribute__((dllexport)) -# endif -#else -# define VX_EXPORT -#endif - #endif /* _VDE_VXINTERNALCONFIG_H_ */ \ No newline at end of file