# This needs to come after setting up KDE integration, so we can use KDE-specific paths
include(QuasselInstallDirs)
+# RPATH and output settings
+#####################################################################
+
+# Build artifacts in a well-known location; especially important for Windows DLLs
+# (which go into RUNTIME_OUTPUT_DIRECTORY and can thus be found by executables)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+
+# These RPATH settings allow for running directly from the build dir
+set(CMAKE_SKIP_BUILD_RPATH FALSE)
+set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
+
+# Set install RPATH only if libdir isn't a system directory
+if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(libdir "${CMAKE_INSTALL_LIBDIR}")
+else()
+ set(libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+endif()
+list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${libdir}" is_systemdir)
+if ("${is_systemdir}" STREQUAL "-1")
+ set(CMAKE_INSTALL_RPATH "${libdir}")
+endif()
+
# Various config-dependent checks and settings
#####################################################################
add_subdirectory(pics)
add_subdirectory(po)
-
# Set up and display feature summary
#####################################################################
string(REPLACE "::" "_" target ${target})
string(REPLACE "_" "-" output_name ${target})
- add_library(${target} STATIC "")
- add_library(${alias} ALIAS ${target})
+ # On Windows, building shared libraries requires export headers.
+ # Let's bother with that later.
+ if (WIN32)
+ set(buildmode STATIC)
+ else()
+ set(buildmode SHARED)
+ endif()
- set_target_properties(${target} PROPERTIES
- OUTPUT_NAME ${output_name}
- )
+ add_library(${target} ${buildmode} "")
+ add_library(${alias} ALIAS ${target})
+ target_link_libraries(${target} PRIVATE Qt5::Core)
target_include_directories(${target}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR} # for generated files
)
-
target_compile_features(${target} PUBLIC ${QUASSEL_COMPILE_FEATURES})
+ set_target_properties(${target} PROPERTIES
+ OUTPUT_NAME ${output_name}
+ VERSION ${QUASSEL_MAJOR}.${QUASSEL_MINOR}.${QUASSEL_PATCH}
+ )
+
+ if (buildmode STREQUAL "SHARED")
+ install(TARGETS ${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif()
+
# Export the target name for further use
set(TARGET ${target} PARENT_SCOPE)
endfunction()