From 8ad76ad7e5b7ab1b2b682600b3dc462357ea3156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 20 Jun 2012 23:24:34 +0200 Subject: [PATCH] Fixed Windows build. * CMAKE_SHARED_LIBRARY_CXX_FLAGS is empty here, caused CMake errors. * CMake's OBJECT target has a bug that it doesn't define target_EXPORTS as with other library targets, so it's needed to define it manually. It also fixes empty flags issue. * Visibility headers weren't updated for OBJECT targets, they now also catch *Objects_EXPORTS defines. --- src/CMakeLists.txt | 4 +++- src/MeshTools/CMakeLists.txt | 5 ++++- src/MeshTools/visibilityMeshTools.h | 2 +- src/Physics/CMakeLists.txt | 1 - src/Shaders/CMakeLists.txt | 2 +- src/visibility.h | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a6ceea13b..0033d1d2e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,7 +30,9 @@ set(MagnumMath_SRCS ) add_library(MagnumMathObjects OBJECT ${MagnumMath_SRCS}) -set_target_properties(MagnumObjects MagnumMathObjects PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}) +# Set shared library flags for the objects, as they will be part of shared lib +# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well +set_target_properties(MagnumObjects MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") # Files compiled with different flags for main library and unit test library set(Magnum_GracefulAssert_SRCS diff --git a/src/MeshTools/CMakeLists.txt b/src/MeshTools/CMakeLists.txt index a4b4ebe15..2d33389d8 100644 --- a/src/MeshTools/CMakeLists.txt +++ b/src/MeshTools/CMakeLists.txt @@ -3,7 +3,10 @@ set(MagnumMeshTools_SRCS Tipsify.cpp ) add_library(MagnumMeshToolsObjects OBJECT ${MagnumMeshTools_SRCS}) -set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}) + +# Set shared library flags for the objects, as they will be part of shared lib +# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well +set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") # Files compiled with different flags for main library and unit test library set(MagnumMeshTools_GracefulAssert_SRCS diff --git a/src/MeshTools/visibilityMeshTools.h b/src/MeshTools/visibilityMeshTools.h index 57c36d34e..4db87ced7 100644 --- a/src/MeshTools/visibilityMeshTools.h +++ b/src/MeshTools/visibilityMeshTools.h @@ -16,7 +16,7 @@ */ #ifdef _WIN32 - #ifdef MagnumMeshTools_EXPORTS + #if defined(MagnumMeshTools_EXPORTS) || defined(MagnumMeshToolsObjects_EXPORTS) #define MESHTOOLS_EXPORT __declspec(dllexport) #else #define MESHTOOLS_EXPORT __declspec(dllimport) diff --git a/src/Physics/CMakeLists.txt b/src/Physics/CMakeLists.txt index ce69e40a0..0f3833d7a 100644 --- a/src/Physics/CMakeLists.txt +++ b/src/Physics/CMakeLists.txt @@ -9,7 +9,6 @@ set(MagnumPhysics_SRCS ) add_library(MagnumPhysics SHARED ${MagnumPhysics_SRCS}) -set_target_properties(MagnumPhysics PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}) target_link_libraries(MagnumPhysics Magnum) diff --git a/src/Shaders/CMakeLists.txt b/src/Shaders/CMakeLists.txt index 979a32372..8ee7c2b6e 100644 --- a/src/Shaders/CMakeLists.txt +++ b/src/Shaders/CMakeLists.txt @@ -5,7 +5,7 @@ set(Shaders_SRCS ) add_library(MagnumShaders SHARED ${Shaders_SRCS}) -set_target_properties(MagnumShaders PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}) + target_link_libraries(MagnumShaders Magnum) install(TARGETS MagnumShaders DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR}) diff --git a/src/visibility.h b/src/visibility.h index 9c96ac77d..833cab183 100644 --- a/src/visibility.h +++ b/src/visibility.h @@ -16,7 +16,7 @@ */ #ifdef _WIN32 - #ifdef Magnum_EXPORTS + #if defined(Magnum_EXPORTS) || defined(MagnumObjects_EXPORTS) #define MAGNUM_EXPORT __declspec(dllexport) #else #define MAGNUM_EXPORT __declspec(dllimport)