File: CMakeLists.txt

package info (click to toggle)
bornagain 23.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 103,936 kB
  • sloc: cpp: 423,131; python: 40,997; javascript: 11,167; awk: 630; sh: 318; ruby: 173; xml: 130; makefile: 51; ansic: 24
file content (88 lines) | stat: -rw-r--r-- 2,517 bytes parent folder | download | duplicates (2)
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
############################################################################
# CMakeLists.txt file for building BornAgain/GUI libraries and executable
############################################################################

message(STATUS "Configuring BornAgain GUI")

set(CMAKE_AUTOMOC ON)

set(lib BornAgainGUI)

# --- source and include files ---

file(GLOB_RECURSE source_files *.cpp)

set(resource_files gui.qrc)

# --- Qt configuration ---------

qt_add_resources(RC_SRCS ${resource_files})

# --- make the library ---------

add_library(${lib} SHARED ${source_files} ${RC_SRCS} ${include_files})
#set_target_properties(${lib} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})

get_target_property(lib_dir ${lib} LIBRARY_OUTPUT_DIRECTORY)
set(BornAgain_LIBRARIES "$CACHE{BornAgain_LIBRARIES};${lib_dir}/${libprefix}${lib}${libsuffix}"
    CACHE INTERNAL "BornAgain libraries")

# switch OFF Qt debug output in any configuration except DEBUG
target_compile_definitions(${lib} PUBLIC $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG_OUTPUT>)

# -----------------------------------------------------------------------------
# runtime library paths
# -----------------------------------------------------------------------------
#   See our deployment paper (Nejati et al 2024) for explanation.

if(LINUX)
    # NOTE: RPATH must be set also in `App/CMakeLists.txt`
    set(link_flags "-Wl,--disable-new-dtags,-rpath,\$ORIGIN")
    set_target_properties(${lib} PROPERTIES LINK_FLAGS ${link_flags})
endif(LINUX)

if(BORNAGAIN_PYTHON)
    target_compile_definitions(${lib} PRIVATE -DBORNAGAIN_PYTHON)
endif()

# --- external dependences ---------

target_link_libraries(${lib}
    PUBLIC
    BornAgainSim
    BornAgainImg3D
    Qt6::Widgets
    Qt6::Core
    Qt6::Gui
    Qt6::OpenGLWidgets
    PRIVATE
    Qt6::PrintSupport
    qcustomplot
)
if(BORNAGAIN_PYTHON)
    target_link_libraries(${lib} PUBLIC BornAgainPyCore)
endif()
target_include_directories(${lib} PUBLIC
    ${CMAKE_SOURCE_DIR}
    ${CMAKE_SOURCE_DIR}/3rdparty/GUI/qcustomplot
)

if(WIN32)
    target_compile_definitions(${lib} PRIVATE -DBA_GUI_BUILD_DLL)
endif()

if(BA_CRASHHANDLER)
    target_compile_definitions(${lib} PRIVATE -DBA_CRASHHANDLER)
endif()

# --- installation ---------

set_target_properties(${lib} PROPERTIES
    PREFIX ${libprefix}
    SUFFIX ${libsuffix}
    OUTPUT_NAME ${lib}
    )

install(TARGETS ${lib}
    LIBRARY DESTINATION ${destination_lib} COMPONENT Libraries
    RUNTIME DESTINATION ${destination_lib} COMPONENT Libraries)