Skip to content

Commit 9116b4a

Browse files
NC-2499: Add BUILD_SHARED_LIBS and -TESTING-option
1 parent 88a3e75 commit 9116b4a

15 files changed

+53
-53
lines changed

CMakeLists.txt

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,19 @@ project (lib3MF)
99
# Define Version
1010
set(LIB3MF_VERSION_MAJOR 1) # increase on every backward-compatibility breaking change of the API
1111
set(LIB3MF_VERSION_MINOR 3) # increase on every backward compatible change of the API
12-
set(LIB3MF_VERSION_MICRO 0) # increase on on every change that does not alter the API
12+
set(LIB3MF_VERSION_MICRO 1) # increase on on every change that does not alter the API
13+
14+
15+
# Add targets
16+
# By default the shared libray is being built
17+
# To build the static library, add the cmake option -DBUILD_SHARED_LIBS:BOOL=OFF
18+
option(BUILD_SHARED_LIBS "build as shared library" ON)
19+
message("BUILD_SHARED_LIBS ... " ${BUILD_SHARED_LIBS})
20+
21+
# By default the tests of the library are being built
22+
# To not build the tests, use cmake . -DBUILD_TESTING:BOOL=OFF
23+
option(BUILD_TESTING "build the tests of the library" ON)
24+
message("BUILD_TESTING ... " ${BUILD_TESTING})
1325

1426
set(CMAKE_INSTALL_BINDIR bin CACHE PATH "directory for installing binary files")
1527
set(CMAKE_INSTALL_LIBDIR lib CACHE PATH "directory for installing library files")
@@ -32,6 +44,8 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
3244
add_definitions(-DBUILD_DLL -DLIB3MF_EXPORTS /W3)
3345
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} xmllite.lib")
3446
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS)
47+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
48+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
3549
if(NMR_COM_NATIVE)
3650
add_definitions(-DNMR_COM_NATIVE)
3751
endif()
@@ -91,44 +105,28 @@ endif()
91105

92106

93107
#########################################################
94-
# Static library (as base for other targets)
95-
add_library(${PROJECT_NAME}_s STATIC ${SRCS_MAIN_PLATFORM} ${SRCS_COMMON})
96-
target_include_directories(${PROJECT_NAME}_s PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include)
97-
target_include_directories(${PROJECT_NAME}_s PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/Include)
98-
SET_TARGET_PROPERTIES(${PROJECT_NAME}_s PROPERTIES PREFIX "" IMPORT_PREFIX "")
99-
if (UNIX OR MINGW)
100-
target_compile_options(${PROJECT_NAME}_s PUBLIC "-fPIC")
101-
# Uncomment the following to but the version info into the .so-file.
102-
SET_TARGET_PROPERTIES(${PROJECT_NAME}_s PROPERTIES VERSION "${LIB3MF_VERSION_MAJOR}.${LIB3MF_VERSION_MINOR}.${LIB3MF_VERSION_MICRO}.${BUILD_NUMBER}")
103-
SET_TARGET_PROPERTIES(${PROJECT_NAME}_s PROPERTIES SOVERSION "${LIB3MF_VERSION_MAJOR}")
104-
if (NOT APPLE)
105-
SET_TARGET_PROPERTIES(${PROJECT_NAME}_s PROPERTIES LINK_FLAGS -s)
106-
endif()
107-
find_library(LIBUUID_PATH uuid)
108-
if(NOT LIBUUID_PATH)
109-
message(FATAL_ERROR "libuuid not found")
110-
endif()
111-
target_link_libraries(${PROJECT_NAME}_s ${LIBUUID_PATH})
112-
else()
113-
# wd4996 masks the deprecated-warning
114-
target_compile_options(${PROJECT_NAME}_s PUBLIC "$<$<CONFIG:DEBUG>:/Od;/Ob0;/Gm;/sdl;/W3;/WX;/FC;/wd4996>")
115-
target_compile_options(${PROJECT_NAME}_s PUBLIC "$<$<CONFIG:RELEASE>:/O2;/sdl;/WX;/Oi;/Gy;/FC;/wd4996>")
116-
endif()
117-
118-
119-
#########################################################
120-
# Shared library
121-
add_library(${PROJECT_NAME} SHARED ${SRCS_MAIN_PLATFORM}
122-
"./Source/Model/COM/NMR_DLLInterfaces.cpp"
108+
# The main lib3MF library
109+
add_library(${PROJECT_NAME}
110+
${SRCS_MAIN_PLATFORM} ${SRCS_COMMON}
123111
${VERSION_FILES_OUTPUTLOCATION}
124112
)
113+
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include)
114+
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/Include)
125115
set(STARTUPPROJECT ${PROJECT_NAME})
126116
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" IMPORT_PREFIX "")
127-
target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_s)
128117
if (UNIX OR MINGW)
129118
# Uncomment the following to but the version info into the .so-file.
130119
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION "${LIB3MF_VERSION_MAJOR}.${LIB3MF_VERSION_MINOR}.${LIB3MF_VERSION_MICRO}.${BUILD_NUMBER}")
131120
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION "${LIB3MF_VERSION_MAJOR}")
121+
122+
find_library(LIBUUID_PATH uuid)
123+
if(NOT LIBUUID_PATH)
124+
message(FATAL_ERROR "libuuid not found")
125+
endif()
126+
target_link_libraries(${PROJECT_NAME} ${LIBUUID_PATH})
127+
if (NOT APPLE)
128+
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINK_FLAGS -s)
129+
endif()
132130
endif()
133131
install(TARGETS ${PROJECT_NAME}
134132
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@@ -138,30 +136,25 @@ install(DIRECTORY Include/Model DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
138136
install(DIRECTORY Include/Common DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
139137
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Include/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
140138

139+
141140
#########################################################
142-
if(NOT DEFINED LIB3MF_TESTS)
143-
set(LIB3MF_TESTS TRUE)
144-
endif()
145-
message("LIB3MF_TESTS ... " ${LIB3MF_TESTS})
146-
if(LIB3MF_TESTS)
141+
if(${BUILD_TESTING})
147142
include(CTest)
148143
# platform independent tests on the C-interface of the library
149144
add_subdirectory(UnitTests)
150145

151-
# windows specific tests
146+
# windows specific tests for the C++ classes of the library
152147
if (WIN32)
153148
SET(UNITTEST_NAME "${PROJECT_NAME}unittests")
154-
add_library(${UNITTEST_NAME} SHARED "${SRCS_WIN_MANAGEDTEST}")
149+
add_library(${UNITTEST_NAME} SHARED ${SRCS_MAIN_PLATFORM} ${SRCS_COMMON} ${SRCS_WIN_MANAGEDTEST})
150+
155151
target_include_directories(${UNITTEST_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include)
156152
target_include_directories(${UNITTEST_NAME} PUBLIC "${VCINSTALLDIR}/../../../UnitTest/include")
157153
target_include_directories(${UNITTEST_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/Include)
158154

159155
target_compile_options(${UNITTEST_NAME} PUBLIC "$<$<CONFIG:DEBUG>:/Od;/Ob0;/Gm;/sdl;/W3;/WX;/FC;-DNMR_USEASSERTIONS;-DNMR_UNITTESTS;/wd4996>")
160156
target_compile_options(${UNITTEST_NAME} PUBLIC "$<$<CONFIG:RELEASE>:/O2;/sdl;/WX;/Oi;/Gy;/FC;/wd4996>")
161157

162-
add_dependencies(${UNITTEST_NAME} ${PROJECT_NAME}_s)
163-
target_link_libraries(${UNITTEST_NAME} ${PROJECT_NAME}_s)
164-
165158
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/TestOutput")
166159
endif()
167160
endif()

UnitTests/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#########################################################
22
# platform independent tests on the C-interface of the library
33

4+
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
45
ADD_SUBDIRECTORY (googletest EXCLUDE_FROM_ALL)
56
enable_testing()
67
SET(TEST_CINTERFACE "Test_CInterface")
@@ -30,7 +31,9 @@ if (WIN32)
3031
target_compile_options(${TEST_CINTERFACE} PUBLIC "$<$<CONFIG:RELEASE>:/O2;/sdl;/WX;/Oi;/Gy;/FC;/MT;/wd4996>")
3132
endif()
3233

34+
message(CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR})
3335
target_include_directories(${TEST_CINTERFACE} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Include ${gtest_SOURCE_DIR}/include)
36+
3437
target_link_libraries(${TEST_CINTERFACE} ${PROJECT_NAME} gtest gtest_main)
3538
add_dependencies(${TEST_CINTERFACE} ${PROJECT_NAME})
3639
set_target_properties(${TEST_CINTERFACE} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/")
File renamed without changes.

UnitTests/Source/UnitTest_Attachments.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ in 3MF files.
3030
3131
--*/
3232

33-
#include "UnitTests/UnitTest_Utilities.h"
33+
#include "UnitTest_Utilities.h"
3434
#include "Model/COM/NMR_DLLInterfaces.h"
3535

3636
#include <vector>

UnitTests/Source/UnitTest_BeamLattice.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ UnitTest_ReadWrite.cpp: Defines Unittests for reading and writing of 3MFs
2929
3030
--*/
3131

32-
#include "UnitTests/UnitTest_Utilities.h"
32+
#include "UnitTest_Utilities.h"
3333
#include "Model/COM/NMR_DLLInterfaces.h"
3434

3535
#include <vector>

UnitTests/Source/UnitTest_Extensions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ UnitTest_Extensions.cpp: Defines Unittests for general extension handling
2929
3030
--*/
3131

32-
#include "UnitTests/UnitTest_Utilities.h"
32+
#include "UnitTest_Utilities.h"
3333
#include "Model/COM/NMR_DLLInterfaces.h"
3434
#include <memory>
3535
#include <vector>

UnitTests/Source/UnitTest_OPC_Issues.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ UnitTest_OPC_Issues.cpp: Defines Unittests for OPC related requirements of a
2929
3MF-reader/writer.
3030
--*/
3131

32-
#include "UnitTests/UnitTest_Utilities.h"
32+
#include "UnitTest_Utilities.h"
3333
#include "Model/COM/NMR_DLLInterfaces.h"
3434

3535
#include <vector>

UnitTests/Source/UnitTest_Production.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Defines Unittests for reading and writing the production extenstion to 3MF.
3030
3131
--*/
3232

33-
#include "UnitTests/UnitTest_Utilities.h"
33+
#include "UnitTest_Utilities.h"
3434
#include "Model/COM/NMR_DLLInterfaces.h"
3535

3636
#include <vector>

UnitTests/Source/UnitTest_ProgressCallback.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ UnitTest_ProgressCallback.cpp: Defines Unittests for the progress callback funct
2929
3030
--*/
3131

32-
#include "UnitTests/UnitTest_Utilities.h"
32+
#include "UnitTest_Utilities.h"
3333
#include "Model/COM/NMR_DLLInterfaces.h"
3434

3535
#include <vector>

UnitTests/Source/UnitTest_ReadWrite.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ UnitTest_ReadWrite.cpp: Defines Unittests for reading and writing of 3MFs
2929
3030
--*/
3131

32-
#include "UnitTests/UnitTest_Utilities.h"
32+
#include "UnitTest_Utilities.h"
3333
#include "Model/COM/NMR_DLLInterfaces.h"
3434

3535
#include <vector>

0 commit comments

Comments
 (0)