forked from RISCSoftware/cpacs_tigl_gen
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
93 lines (74 loc) · 3.01 KB
/
Copy pathCMakeLists.txt
File metadata and controls
93 lines (74 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# CPACSGen cmake project
# author: Bernhard Manfred Gruber
cmake_minimum_required(VERSION 3.11.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(CPACSGen)
# cache variables
set(TIXI_PATH "" CACHE PATH "Tixi installation prefix")
set(TIGL_PATH "" CACHE PATH "Tigl installation prefix")
# special handling for enforcing old c++ ABI on RHEL7 (required when using a self-built gcc without
string (REGEX MATCH "\\.el7\\." SYSTEM_RHEL7 ${CMAKE_SYSTEM})
if (SYSTEM_RHEL7)
OPTION(ENFORCE_OLD_CXX_ABI "Enforce old CXX ABI (_GLIBCXX_USE_CXX11_ABI=0)" ON)
if (ENFORCE_OLD_CXX_ABI)
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
endif()
endif()
# find tixi
set(CMAKE_PREFIX_PATH "${TIXI_PATH};${CMAKE_PREFIX_PATH}")
find_package(tixi3 3.0.3 REQUIRED)
# lib
file(GLOB LIB_INPUTS src/lib/*.cpp *src/lib/*.h *src/lib/runtime/*.h)
add_library(lib${PROJECT_NAME} ${LIB_INPUTS})
target_link_libraries(lib${PROJECT_NAME} PUBLIC tixi3)
source_group(" " FILES ${LIB_INPUTS})
target_compile_definitions(lib${PROJECT_NAME} PUBLIC
-DCPACS_GEN
)
# driver
file(GLOB DRIVER_INPUTS src/driver/*.cpp *src/driver/*.h *.md)
add_executable(${PROJECT_NAME} ${DRIVER_INPUTS})
source_group(" " FILES ${DRIVER_INPUTS})
target_link_libraries(${PROJECT_NAME}
lib${PROJECT_NAME}
)
# tests
message(STATUS "Build gtest Testsuite")
enable_testing()
option(gtest_force_shared_crt "" ON)
mark_as_advanced(gtest_force_shared_crt gtest_build_tests gtest_build_samples gtest_disable_pthreads)
set(BUILD_GMOCK OFF)
set(INSTALL_GTEST OFF)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
message(STATUS "Download and configure the TIGL gtest Testsuite")
include(AddGoogleTest)
message(STATUS "Download and configure the TIGL gtest Testsuite - Success")
set(DATA_DIR ${CMAKE_SOURCE_DIR}/test/data)
configure_file(test/paths.h.in ${CMAKE_BINARY_DIR}/test/paths.h)
file(GLOB TEST_INPUTS test/*.cpp test/*.h)
list(APPEND TEST_INPUTS ${CMAKE_BINARY_DIR}/test/paths.h)
add_executable(tests ${TEST_INPUTS})
target_link_libraries(tests PRIVATE gtest gtest_main libCPACSGen)
target_include_directories(tests PUBLIC
${CMAKE_BINARY_DIR}/test
)
add_test(NAME tests COMMAND tests)
# generate target
if(TIGL_PATH)
set(GENERATOR_INPUT_DIR ${TIGL_PATH}/cpacs_gen_input CACHE PATH "Generator input files (Tigl cpacs_gen_input directory)")
set(GENERATOR_OUTPUT_DIR ${TIGL_PATH}/src/generated CACHE PATH "Output directory for the generated CPACS classes (Tigl src/generated directory)")
# add custom target to generate files side by side to TIGL source
add_custom_target(
generate
COMMAND ${PROJECT_NAME} ${GENERATOR_INPUT_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/runtime ${GENERATOR_OUTPUT_DIR}
COMMENT Running CPACSGen
VERBATIM
)
else()
message(WARNING "TIGL_PATH is not specified. Target generate will not be created")
endif()
# copy shared library to ouput directory
if (WIN32)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$<TARGET_FILE:tixi3>" "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
endif (WIN32)