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)
|