2016-11-10 23:24:09 +01:00
|
|
|
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
|
|
|
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT BASIC_PROJECT_CONFIG_DONE)
|
2017-02-11 02:30:46 +01:00
|
|
|
message(FATAL_ERROR "Before including the LibraryTarget module, the BasicConfig module must be included.")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
if (TARGET_CONFIG_DONE)
|
2017-02-11 02:30:46 +01:00
|
|
|
message(FATAL_ERROR "Can not include LibraryTarget module when targets are already configured.")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2016-08-19 16:13:41 +02:00
|
|
|
# check whether project type is set correctly
|
2019-02-06 17:30:52 +01:00
|
|
|
if (("${META_PROJECT_TYPE}" STREQUAL "plugin") OR ("${META_PROJECT_TYPE}" STREQUAL "qtplugin"))
|
2017-02-20 20:03:16 +01:00
|
|
|
set(META_IS_PLUGIN YES)
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
if ((NOT "${META_PROJECT_TYPE}" STREQUAL "library") AND (NOT "${META_PROJECT_TYPE}" STREQUAL "") AND NOT META_IS_PLUGIN)
|
|
|
|
message(
|
|
|
|
FATAL_ERROR
|
|
|
|
"The LibraryTarget CMake module is intended to be used for building library projects only (and not for applications)."
|
|
|
|
)
|
|
|
|
endif ()
|
2016-08-19 16:13:41 +02:00
|
|
|
|
2018-02-16 23:56:29 +01:00
|
|
|
# includes for configure_package_config_file, write_basic_package_version_file and find_template_file
|
2016-04-16 00:50:16 +02:00
|
|
|
include(CMakePackageConfigHelpers)
|
2016-06-09 22:57:51 +02:00
|
|
|
include(TemplateFinder)
|
2016-04-16 00:50:16 +02:00
|
|
|
|
|
|
|
# set install destination for the CMake modules, config files and header files
|
|
|
|
set(HEADER_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/include")
|
2016-07-16 23:04:22 +02:00
|
|
|
set(BIN_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
2016-06-29 18:43:44 +02:00
|
|
|
set(LIB_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${SELECTED_LIB_SUFFIX}")
|
2017-02-20 20:03:16 +01:00
|
|
|
set(QT_PLUGIN_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${SELECTED_LIB_SUFFIX}/qt/plugins")
|
2016-04-16 00:50:16 +02:00
|
|
|
set(CMAKE_MODULE_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/share/${META_PROJECT_NAME}/cmake/modules")
|
|
|
|
set(CMAKE_CONFIG_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/share/${META_PROJECT_NAME}/cmake")
|
|
|
|
|
|
|
|
# remove library prefix when building with mingw-w64 (just for consistency with qmake)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (MINGW)
|
2016-04-16 00:50:16 +02:00
|
|
|
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif (MINGW)
|
2016-04-16 00:50:16 +02:00
|
|
|
|
|
|
|
# set the windows extension to "dll", this is required by the mingw-w64 specific WindowsResources module
|
2019-02-06 17:30:52 +01:00
|
|
|
if (MINGW)
|
2016-04-16 00:50:16 +02:00
|
|
|
set(WINDOWS_EXT "dll")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif (MINGW)
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2016-11-10 23:24:09 +01:00
|
|
|
# set compile definitions
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS)
|
|
|
|
set(META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS ${META_PUBLIC_COMPILE_DEFINITIONS}
|
|
|
|
${META_ADDITIONAL_PUBLIC_SHARED_COMPILE_DEFINITIONS})
|
|
|
|
endif ()
|
|
|
|
if (NOT META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS)
|
|
|
|
set(META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS ${META_PRIVATE_COMPILE_DEFINITIONS}
|
|
|
|
${META_ADDITIONAL_PRIVATE_SHARED_COMPILE_DEFINITIONS})
|
|
|
|
endif ()
|
|
|
|
if (NOT META_PUBLIC_STATIC_LIB_COMPILE_DEFINITIONS)
|
|
|
|
set(META_PUBLIC_STATIC_LIB_COMPILE_DEFINITIONS
|
|
|
|
${META_PUBLIC_COMPILE_DEFINITIONS}
|
|
|
|
${META_PROJECT_VARNAME_UPPER}_STATIC
|
|
|
|
${META_ADDITIONAL_PUBLIC_STATIC_COMPILE_DEFINITIONS})
|
|
|
|
endif ()
|
|
|
|
if (NOT META_PRIVATE_STATIC_LIB_COMPILE_DEFINITIONS)
|
|
|
|
set(META_PRIVATE_STATIC_LIB_COMPILE_DEFINITIONS ${META_PRIVATE_COMPILE_DEFINITIONS}
|
|
|
|
${META_ADDITIONAL_PRIVATE_STATIC_COMPILE_DEFINITIONS})
|
|
|
|
endif ()
|
2016-08-29 15:35:48 +02:00
|
|
|
|
|
|
|
# add global library-specific header
|
|
|
|
find_template_file("global.h" CPP_UTILITIES GLOBAL_H_TEMPLATE_FILE)
|
2019-02-06 17:30:52 +01:00
|
|
|
if ("${META_PROJECT_NAME}" STREQUAL "c++utilities")
|
2016-08-29 15:35:48 +02:00
|
|
|
set(GENERAL_GLOBAL_H_INCLUDE_PATH "\"./application/global.h\"")
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2016-08-29 15:35:48 +02:00
|
|
|
set(GENERAL_GLOBAL_H_INCLUDE_PATH "<c++utilities/application/global.h>")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
configure_file("${GLOBAL_H_TEMPLATE_FILE}"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/global.h" # simply add this to source to ease inclusion
|
|
|
|
NEWLINE_STYLE UNIX # since this goes to sources ensure consistency
|
|
|
|
)
|
2016-08-29 15:35:48 +02:00
|
|
|
list(APPEND HEADER_FILES global.h)
|
|
|
|
|
2016-10-22 21:00:33 +02:00
|
|
|
# determine SOVERSION
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT META_SOVERSION AND NOT META_IS_PLUGIN)
|
|
|
|
if (META_VERSION_EXACT_SONAME)
|
2016-10-22 21:00:33 +02:00
|
|
|
set(META_SOVERSION "${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}")
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2016-10-22 21:00:33 +02:00
|
|
|
set(META_SOVERSION "${META_VERSION_MAJOR}")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
endif ()
|
2017-02-20 20:03:16 +01:00
|
|
|
message(STATUS "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}: BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}")
|
2017-07-09 23:38:11 +02:00
|
|
|
|
|
|
|
# define relevant files
|
2019-02-06 17:30:52 +01:00
|
|
|
set(ALL_FILES
|
|
|
|
${HEADER_FILES}
|
|
|
|
${SRC_FILES}
|
|
|
|
${GENERATED_DBUS_FILES}
|
|
|
|
${WIDGETS_FILES}
|
|
|
|
${QML_FILES}
|
|
|
|
${RES_FILES}
|
|
|
|
${WINDOWS_ICON_PATH})
|
|
|
|
if (NOT BUILTIN_TRANSLATIONS)
|
2017-11-01 23:47:04 +01:00
|
|
|
list(APPEND ALL_FILES ${QM_FILES})
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2017-07-09 23:38:11 +02:00
|
|
|
|
2018-01-20 20:43:18 +01:00
|
|
|
# determine include path used when building the project itself
|
2019-02-06 17:30:52 +01:00
|
|
|
if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
2018-01-20 20:43:18 +01:00
|
|
|
# use special include directory if available
|
|
|
|
set(TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2018-01-20 20:43:18 +01:00
|
|
|
# use the project folder itself
|
|
|
|
set(TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2018-01-20 20:43:18 +01:00
|
|
|
|
2016-04-16 00:50:16 +02:00
|
|
|
# add target for building the library
|
2019-02-06 17:30:52 +01:00
|
|
|
if (BUILD_SHARED_LIBS)
|
|
|
|
if (STATIC_LIBRARY_LINKAGE)
|
2016-11-10 23:24:09 +01:00
|
|
|
set(ACTUAL_ADDITIONAL_LINK_FLAGS ${META_ADDITIONAL_STATIC_LINK_FLAGS})
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2016-11-10 23:24:09 +01:00
|
|
|
set(ACTUAL_ADDITIONAL_LINK_FLAGS ${META_ADDITIONAL_SHARED_LINK_FLAGS})
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
if (META_IS_PLUGIN)
|
2017-02-20 20:03:16 +01:00
|
|
|
set(META_SHARED_OBJECT_TYPE MODULE)
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2017-02-20 20:03:16 +01:00
|
|
|
set(META_SHARED_OBJECT_TYPE SHARED)
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2016-08-19 16:13:41 +02:00
|
|
|
# add library to be created, set libs to link against, set version and C++ standard
|
2019-02-06 17:30:52 +01:00
|
|
|
if (META_HEADER_ONLY_LIB)
|
2017-04-12 23:41:10 +02:00
|
|
|
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} INTERFACE)
|
|
|
|
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}" "${PRIVATE_LIBRARIES}")
|
|
|
|
target_include_directories(
|
|
|
|
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
|
|
|
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
|
|
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_SHARED_INCLUDE_DIRS})
|
2017-04-12 23:41:10 +02:00
|
|
|
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE
|
|
|
|
"${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}"
|
|
|
|
"${META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS}")
|
2017-06-18 16:14:45 +02:00
|
|
|
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE "${META_PUBLIC_SHARED_LIB_COMPILE_OPTIONS}"
|
|
|
|
"${META_PRIVATE_SHARED_LIB_COMPILE_OPTIONS}")
|
|
|
|
else ()
|
2017-07-09 23:38:11 +02:00
|
|
|
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} ${META_SHARED_OBJECT_TYPE} ${ALL_FILES})
|
2017-04-12 23:41:10 +02:00
|
|
|
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
|
|
|
PRIVATE "${PRIVATE_LIBRARIES}")
|
2017-07-04 22:44:32 +02:00
|
|
|
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
|
|
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_SHARED_INCLUDE_DIRS}
|
|
|
|
PRIVATE "${PRIVATE_SHARED_INCLUDE_DIRS}")
|
2017-04-12 23:41:10 +02:00
|
|
|
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC
|
|
|
|
"${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}"
|
|
|
|
PRIVATE
|
|
|
|
"${META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS}")
|
2017-06-18 16:14:45 +02:00
|
|
|
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC "${META_PUBLIC_SHARED_LIB_COMPILE_OPTIONS}"
|
|
|
|
PRIVATE "${META_PRIVATE_SHARED_LIB_COMPILE_OPTIONS}")
|
|
|
|
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
|
|
|
PROPERTIES VERSION
|
|
|
|
"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
|
|
|
SOVERSION
|
|
|
|
"${META_SOVERSION}"
|
|
|
|
CXX_STANDARD
|
|
|
|
"${META_CXX_STANDARD}"
|
|
|
|
LINK_SEARCH_START_STATIC
|
|
|
|
${STATIC_LINKAGE}
|
|
|
|
LINK_SEARCH_END_STATIC
|
|
|
|
${STATIC_LINKAGE}
|
|
|
|
AUTOGEN_TARGET_DEPENDS
|
|
|
|
"${AUTOGEN_DEPS}")
|
|
|
|
endif ()
|
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2016-05-28 01:52:55 +02:00
|
|
|
# add target for building a static version of the library
|
2019-02-06 17:30:52 +01:00
|
|
|
if (BUILD_STATIC_LIBS)
|
2017-04-12 23:41:10 +02:00
|
|
|
# add library to be created, set required libs, set version and C++ standard
|
2019-02-06 17:30:52 +01:00
|
|
|
if (META_HEADER_ONLY_LIB)
|
2017-04-12 23:41:10 +02:00
|
|
|
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static INTERFACE)
|
|
|
|
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_STATIC_LIBRARIES}"
|
|
|
|
"${PRIVATE_STATIC_LIBRARIES}")
|
|
|
|
target_include_directories(
|
|
|
|
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
|
|
|
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
|
|
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_STATIC_INCLUDE_DIRS})
|
2017-04-12 23:41:10 +02:00
|
|
|
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE
|
|
|
|
"${META_PUBLIC_STATIC_LIB_COMPILE_DEFINITIONS}"
|
|
|
|
"${META_PRIVATE_STATIC_LIB_COMPILE_DEFINITIONS}")
|
2017-06-18 16:14:45 +02:00
|
|
|
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE "${META_PUBLIC_STATIC_LIB_COMPILE_OPTIONS}"
|
|
|
|
"${META_PRIVATE_STATIC_LIB_COMPILE_OPTIONS}")
|
|
|
|
else ()
|
2017-07-09 23:38:11 +02:00
|
|
|
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static STATIC ${ALL_FILES})
|
2017-04-12 23:41:10 +02:00
|
|
|
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC "${PUBLIC_STATIC_LIBRARIES}" "${PRIVATE_STATIC_LIBRARIES}")
|
2017-07-04 22:44:32 +02:00
|
|
|
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
|
|
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_STATIC_INCLUDE_DIRS}
|
|
|
|
PRIVATE "${PRIVATE_STATIC_INCLUDE_DIRS}")
|
2017-04-12 23:41:10 +02:00
|
|
|
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC
|
|
|
|
"${META_PUBLIC_STATIC_LIB_COMPILE_DEFINITIONS}"
|
|
|
|
PRIVATE
|
|
|
|
"${META_PRIVATE_STATIC_LIB_COMPILE_DEFINITIONS}")
|
2017-06-18 16:14:45 +02:00
|
|
|
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
2019-02-06 17:30:52 +01:00
|
|
|
PUBLIC "${META_PUBLIC_STATIC_LIB_COMPILE_OPTIONS}"
|
|
|
|
PRIVATE "${META_PRIVATE_STATIC_LIB_COMPILE_OPTIONS}")
|
|
|
|
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
|
|
|
PROPERTIES VERSION
|
|
|
|
"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
|
|
|
SOVERSION
|
|
|
|
"${META_SOVERSION}"
|
|
|
|
OUTPUT_NAME
|
|
|
|
"${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}"
|
|
|
|
CXX_STANDARD
|
|
|
|
"${META_CXX_STANDARD}"
|
|
|
|
AUTOGEN_TARGET_DEPENDS
|
|
|
|
"${AUTOGEN_DEPS}")
|
|
|
|
endif ()
|
|
|
|
foreach (DEPENDENCY ${PUBLIC_STATIC_LIBRARIES} ${PRIVATE_STATIC_LIBRARIES})
|
|
|
|
if (NOT ${DEPENDENCY} IN_LIST META_PUBLIC_STATIC_LIB_DEPENDS)
|
2016-11-10 23:24:09 +01:00
|
|
|
list(APPEND META_PRIVATE_STATIC_LIB_DEPENDS ${DEPENDENCY})
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2017-04-12 23:41:10 +02:00
|
|
|
# Qt Creator does not show INTERFACE_SOURCES in project tree, so create a custom target as workaround
|
2019-02-06 17:30:52 +01:00
|
|
|
if (META_HEADER_ONLY_LIB)
|
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
|
|
|
|
"// not belonging to a real target, only for header-only lib files showing up in Qt Creator")
|
2018-06-24 20:43:08 +02:00
|
|
|
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
2019-02-06 17:30:52 +01:00
|
|
|
EXCLUDE_FROM_ALL
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
|
|
|
|
${HEADER_FILES})
|
2018-06-24 20:43:08 +02:00
|
|
|
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
|
|
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_SHARED_INCLUDE_DIRS})
|
2018-06-24 20:43:08 +02:00
|
|
|
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
2019-02-06 17:30:52 +01:00
|
|
|
INTERFACE
|
|
|
|
"${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}"
|
|
|
|
"${META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS}")
|
|
|
|
target_compile_options(
|
|
|
|
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
|
|
|
INTERFACE "${META_PUBLIC_SHARED_LIB_COMPILE_OPTIONS}" "${META_PRIVATE_SHARED_LIB_COMPILE_OPTIONS}")
|
|
|
|
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
|
|
|
PROPERTIES VERSION
|
|
|
|
"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
|
|
|
SOVERSION
|
|
|
|
"${META_SOVERSION}"
|
|
|
|
CXX_STANDARD
|
|
|
|
"${META_CXX_STANDARD}"
|
|
|
|
AUTOGEN_TARGET_DEPENDS
|
|
|
|
"${AUTOGEN_DEPS}")
|
|
|
|
endif ()
|
2017-04-12 23:41:10 +02:00
|
|
|
|
2016-08-14 16:49:40 +02:00
|
|
|
# create the CMake package config file from template
|
2018-02-16 23:56:29 +01:00
|
|
|
find_template_file("Config.cmake" CPP_UTILITIES CONFIG_TEMPLATE_FILE)
|
2019-02-06 17:30:52 +01:00
|
|
|
configure_package_config_file("${CONFIG_TEMPLATE_FILE}"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}Config.cmake"
|
|
|
|
INSTALL_DESTINATION
|
|
|
|
"${CMAKE_CONFIG_INSTALL_DESTINATION}"
|
|
|
|
PATH_VARS
|
|
|
|
CMAKE_MODULE_INSTALL_DESTINATION
|
|
|
|
CMAKE_CONFIG_INSTALL_DESTINATION
|
|
|
|
HEADER_INSTALL_DESTINATION
|
|
|
|
BIN_INSTALL_DESTINATION
|
|
|
|
LIB_INSTALL_DESTINATION)
|
|
|
|
list(APPEND CMAKE_CONFIG_FILES "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}Config.cmake"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}ConfigVersion.cmake")
|
|
|
|
if (BUILD_SHARED_LIBS)
|
2018-02-16 23:56:29 +01:00
|
|
|
find_template_file("SharedConfig.cmake" CPP_UTILITIES SHARED_CONFIG_TEMPLATE_FILE)
|
2019-02-06 17:30:52 +01:00
|
|
|
configure_file("${SHARED_CONFIG_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}SharedConfig.cmake"
|
|
|
|
@ONLY)
|
|
|
|
list(APPEND CMAKE_CONFIG_FILES "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}SharedConfig.cmake")
|
|
|
|
endif ()
|
|
|
|
if (BUILD_STATIC_LIBS)
|
2018-02-16 23:56:29 +01:00
|
|
|
find_template_file("StaticConfig.cmake" CPP_UTILITIES STATIC_CONFIG_TEMPLATE_FILE)
|
2019-02-06 17:30:52 +01:00
|
|
|
configure_file("${STATIC_CONFIG_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}StaticConfig.cmake"
|
|
|
|
@ONLY)
|
|
|
|
list(APPEND CMAKE_CONFIG_FILES "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}StaticConfig.cmake")
|
|
|
|
endif ()
|
2016-07-22 01:35:32 +02:00
|
|
|
|
|
|
|
# write the CMake version config file
|
2019-02-06 17:30:52 +01:00
|
|
|
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}ConfigVersion.cmake
|
|
|
|
VERSION "${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
|
|
|
COMPATIBILITY SameMajorVersion)
|
2016-07-22 01:35:32 +02:00
|
|
|
|
2016-08-14 16:49:40 +02:00
|
|
|
# create pkg-config file from template
|
|
|
|
find_template_file("template.pc" CPP_UTILITIES PKGCONFIG_TEMPLATE_FILE)
|
2019-02-06 17:30:52 +01:00
|
|
|
macro (depends_for_pc LIB_TYPE DEPENDS OUTPUT_VAR_PKGS OUTPUT_VAR_LIBS)
|
2016-11-10 23:24:09 +01:00
|
|
|
unset(${OUTPUT_VAR_PKGS})
|
|
|
|
unset(${OUTPUT_VAR_LIBS})
|
2019-02-06 17:30:52 +01:00
|
|
|
foreach (DEPENDENCY ${${DEPENDS}})
|
|
|
|
if ("${DEPENDENCY}" STREQUAL "general")
|
2016-11-10 23:24:09 +01:00
|
|
|
continue()
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
string(REPLACE "::"
|
|
|
|
"_"
|
|
|
|
DEPENDENCY_VARNAME
|
|
|
|
"${DEPENDENCY}")
|
|
|
|
if (PC_PKG_${LIB_TYPE}_${DEPENDENCY_VARNAME})
|
2016-11-10 23:24:09 +01:00
|
|
|
set(${OUTPUT_VAR_PKGS} "${${OUTPUT_VAR_PKGS}} ${PC_PKG_${LIB_TYPE}_${DEPENDENCY_VARNAME}}")
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2016-11-10 23:24:09 +01:00
|
|
|
set(${OUTPUT_VAR_LIBS} "${${OUTPUT_VAR_LIBS}} ${DEPENDENCY}")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
|
|
|
endmacro ()
|
|
|
|
macro (compile_defs_for_pc LIB_TYPE)
|
|
|
|
foreach (COMPILE_DEFINITION ${META_PUBLIC_${LIB_TYPE}_LIB_COMPILE_DEFINITIONS})
|
2016-11-10 23:24:09 +01:00
|
|
|
set(META_COMPILE_DEFINITIONS_FOR_PC "${META_COMPILE_DEFINITIONS_FOR_PC} -D${COMPILE_DEFINITION}")
|
2019-02-06 17:30:52 +01:00
|
|
|
endforeach ()
|
|
|
|
endmacro ()
|
2016-11-10 23:24:09 +01:00
|
|
|
unset(PC_FILES)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (BUILD_SHARED_LIBS)
|
2016-11-10 23:24:09 +01:00
|
|
|
set(META_PROJECT_NAME_FOR_PC "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
|
|
|
depends_for_pc(SHARED META_PUBLIC_SHARED_LIB_DEPENDS META_PUBLIC_PC_PKGS META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
2017-04-12 23:41:10 +02:00
|
|
|
depends_for_pc(SHARED META_PRIVATE_SHARED_LIB_DEPENDS META_PRIVATE_PC_PKGS META_PRIVATE_LIB_DEPENDS_FOR_PC)
|
|
|
|
compile_defs_for_pc(SHARED)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT META_HEADER_ONLY_LIB)
|
|
|
|
set(META_PUBLIC_LIB_DEPENDS_FOR_PC
|
|
|
|
" -l${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
|
|
|
endif ()
|
|
|
|
if (META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
2017-07-30 00:56:12 +02:00
|
|
|
set(META_PUBLIC_LIB_DEPENDS_FOR_PC " -L\${libdir}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
configure_file("${PKGCONFIG_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME_FOR_PC}.pc" @ONLY)
|
2017-07-30 00:56:12 +02:00
|
|
|
list(APPEND PC_FILES "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME_FOR_PC}.pc")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
if (BUILD_STATIC_LIBS)
|
2016-11-10 23:24:09 +01:00
|
|
|
set(META_PROJECT_NAME_FOR_PC "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static")
|
|
|
|
depends_for_pc(STATIC META_PUBLIC_STATIC_LIB_DEPENDS META_PUBLIC_PC_PKGS META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
|
|
|
depends_for_pc(STATIC META_PRIVATE_STATIC_LIB_DEPENDS META_PRIVATE_PC_PKGS META_PRIVATE_LIB_DEPENDS_FOR_PC)
|
2017-04-12 23:41:10 +02:00
|
|
|
compile_defs_for_pc(STATIC)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT META_HEADER_ONLY_LIB)
|
|
|
|
set(META_PUBLIC_LIB_DEPENDS_FOR_PC
|
|
|
|
" -l${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
|
|
|
endif ()
|
|
|
|
if (META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
2017-07-30 00:56:12 +02:00
|
|
|
set(META_PUBLIC_LIB_DEPENDS_FOR_PC " -L\${libdir}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
configure_file("${PKGCONFIG_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME_FOR_PC}.pc" @ONLY)
|
2017-07-30 00:56:12 +02:00
|
|
|
list(APPEND PC_FILES "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME_FOR_PC}.pc")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2016-08-14 16:49:40 +02:00
|
|
|
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for the CMake config files
|
2019-02-06 17:30:52 +01:00
|
|
|
install(FILES ${CMAKE_CONFIG_FILES} DESTINATION "share/${META_PROJECT_NAME}/cmake" COMPONENT cmake-config)
|
|
|
|
if (NOT TARGET install-cmake-config)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-cmake-config
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=cmake-config -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
2016-08-14 16:49:40 +02:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for pkg-config file
|
2019-02-06 17:30:52 +01:00
|
|
|
if (PC_FILES)
|
|
|
|
install(FILES ${PC_FILES} DESTINATION "lib${SELECTED_LIB_SUFFIX}/pkgconfig" COMPONENT pkg-config)
|
|
|
|
endif ()
|
|
|
|
if (NOT TARGET install-pkg-config)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-pkg-config
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=pkg-config -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
2016-11-10 23:40:34 +01:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for libs
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT TARGET install-binary)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-binary
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=binary -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
2017-04-01 16:18:32 +02:00
|
|
|
|
|
|
|
# add install target for stripped libs
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT TARGET install-binary-strip)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-binary-strip
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
2016-11-10 23:40:34 +01:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# determine install dir for Qt plugins
|
2019-02-06 17:30:52 +01:00
|
|
|
if ("${META_PROJECT_TYPE}" STREQUAL "qtplugin")
|
|
|
|
if (QT_PLUGIN_DIR)
|
2017-04-01 16:18:32 +02:00
|
|
|
set(LIBRARY_DESTINATION ${QT_PLUGIN_DIR})
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2017-04-01 16:18:32 +02:00
|
|
|
set(LIBRARY_DESTINATION lib${SELECTED_LIB_SUFFIX}/qt/plugins)
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
if (META_PLUGIN_CATEGORY)
|
2017-04-01 16:18:32 +02:00
|
|
|
set(LIBRARY_DESTINATION ${LIBRARY_DESTINATION}/${META_PLUGIN_CATEGORY})
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
else ()
|
2017-04-01 16:18:32 +02:00
|
|
|
set(LIBRARY_DESTINATION lib${SELECTED_LIB_SUFFIX})
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2017-04-01 16:18:32 +02:00
|
|
|
|
2017-04-12 23:41:10 +02:00
|
|
|
# add install targets and export targets
|
2019-02-06 17:30:52 +01:00
|
|
|
if (BUILD_SHARED_LIBS)
|
|
|
|
install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
|
|
|
EXPORT ${META_PROJECT_NAME}SharedTargets
|
|
|
|
RUNTIME DESTINATION bin COMPONENT binary
|
|
|
|
LIBRARY DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary
|
|
|
|
ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary)
|
2017-04-12 23:41:10 +02:00
|
|
|
add_dependencies(install-binary ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
|
|
|
add_dependencies(install-binary-strip ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
|
|
|
# export shared lib
|
2017-04-01 16:18:32 +02:00
|
|
|
install(EXPORT ${META_PROJECT_NAME}SharedTargets
|
2019-02-06 17:30:52 +01:00
|
|
|
DESTINATION "share/${META_PROJECT_NAME}/cmake"
|
|
|
|
EXPORT_LINK_INTERFACE_LIBRARIES
|
|
|
|
COMPONENT cmake-config)
|
|
|
|
endif ()
|
|
|
|
if (BUILD_STATIC_LIBS)
|
|
|
|
install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static
|
|
|
|
EXPORT ${META_PROJECT_NAME}StaticTargets
|
|
|
|
RUNTIME DESTINATION bin COMPONENT binary
|
|
|
|
LIBRARY DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary
|
|
|
|
ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary)
|
2017-04-12 23:41:10 +02:00
|
|
|
add_dependencies(install-binary ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static)
|
|
|
|
add_dependencies(install-binary-strip ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static)
|
|
|
|
# export static target
|
2017-04-01 16:18:32 +02:00
|
|
|
install(EXPORT ${META_PROJECT_NAME}StaticTargets
|
2019-02-06 17:30:52 +01:00
|
|
|
DESTINATION "share/${META_PROJECT_NAME}/cmake"
|
|
|
|
EXPORT_LINK_INTERFACE_LIBRARIES
|
|
|
|
COMPONENT cmake-config)
|
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for header files
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT META_IS_PLUGIN)
|
|
|
|
foreach (HEADER_FILE ${HEADER_FILES} ${ADDITIONAL_HEADER_FILES})
|
2017-04-01 16:18:32 +02:00
|
|
|
get_filename_component(HEADER_DIR "${HEADER_FILE}" DIRECTORY)
|
2019-02-06 17:30:52 +01:00
|
|
|
install(FILES "${HEADER_FILE}" DESTINATION "include/${META_PROJECT_NAME}/${HEADER_DIR}" COMPONENT header)
|
|
|
|
endforeach ()
|
|
|
|
if (NOT TARGET install-header)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-header
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=header -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for CMake modules
|
2019-02-06 17:30:52 +01:00
|
|
|
foreach (CMAKE_MODULE_FILE ${CMAKE_MODULE_FILES})
|
2017-04-01 16:18:32 +02:00
|
|
|
get_filename_component(CMAKE_MODULE_DIR ${CMAKE_MODULE_FILE} DIRECTORY)
|
2019-02-06 17:30:52 +01:00
|
|
|
install(FILES ${CMAKE_MODULE_FILE}
|
|
|
|
DESTINATION share/${META_PROJECT_NAME}/${CMAKE_MODULE_DIR}
|
|
|
|
COMPONENT cmake-modules)
|
|
|
|
endforeach ()
|
|
|
|
if (NOT TARGET install-cmake-modules)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-cmake-modules
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=cmake-modules -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for CMake templates
|
2019-02-06 17:30:52 +01:00
|
|
|
foreach (CMAKE_TEMPLATE_FILE ${CMAKE_TEMPLATE_FILES})
|
2017-04-01 16:18:32 +02:00
|
|
|
get_filename_component(CMAKE_TEMPLATE_DIR ${CMAKE_TEMPLATE_FILE} DIRECTORY)
|
2019-02-06 17:30:52 +01:00
|
|
|
install(FILES ${CMAKE_TEMPLATE_FILE}
|
|
|
|
DESTINATION share/${META_PROJECT_NAME}/${CMAKE_TEMPLATE_DIR}
|
|
|
|
COMPONENT cmake-templates)
|
|
|
|
endforeach ()
|
|
|
|
if (NOT TARGET install-cmake-templates)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-cmake-templates
|
2019-02-06 17:30:52 +01:00
|
|
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=cmake-templates -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add install target for all the cmake stuff
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT TARGET install-cmake-stuff)
|
2017-04-01 16:18:32 +02:00
|
|
|
add_custom_target(install-cmake-stuff)
|
|
|
|
add_dependencies(install-cmake-stuff install-cmake-config install-cmake-modules install-cmake-templates)
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2016-04-16 00:50:16 +02:00
|
|
|
|
2017-04-01 16:18:32 +02:00
|
|
|
# add mingw-w64 specific install targets
|
2019-02-06 17:30:52 +01:00
|
|
|
if (MINGW)
|
|
|
|
if (NOT TARGET install-mingw-w64)
|
2018-07-27 16:19:16 +02:00
|
|
|
add_custom_target(install-mingw-w64)
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2018-07-27 16:19:16 +02:00
|
|
|
add_dependencies(install-mingw-w64 install-binary install-header install-cmake-stuff install-pkg-config)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT TARGET install-mingw-w64-strip)
|
2018-07-27 16:19:16 +02:00
|
|
|
add_custom_target(install-mingw-w64-strip)
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2018-07-27 16:19:16 +02:00
|
|
|
add_dependencies(install-mingw-w64-strip install-binary-strip install-header install-cmake-stuff install-pkg-config)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (LOCALIZATION_TARGET)
|
2018-07-27 16:19:16 +02:00
|
|
|
add_dependencies(install-mingw-w64 ${LOCALIZATION_TARGET})
|
|
|
|
add_dependencies(install-mingw-w64-strip ${LOCALIZATION_TARGET})
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
2018-07-27 16:19:16 +02:00
|
|
|
find_program(STRIP_BINARY_PATH strip ONLY_CMAKE_FIND_ROOT_PATH)
|
2019-02-06 17:30:52 +01:00
|
|
|
if (NOT STRIP_BINARY_PATH)
|
2018-07-27 16:19:16 +02:00
|
|
|
message(FATAL_ERROR "Unable to find strip. Please set ${STRIP_BINARY_PATH}.")
|
2019-02-06 17:30:52 +01:00
|
|
|
else ()
|
2018-07-27 16:19:16 +02:00
|
|
|
message(STATUS "Using strip binary under \"${STRIP_BINARY_PATH}\".")
|
2019-02-06 17:30:52 +01:00
|
|
|
endif ()
|
|
|
|
if (BUILD_SHARED_LIBS AND NOT META_HEADER_ONLY_LIB)
|
|
|
|
add_custom_target(
|
|
|
|
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-importlib-strip
|
|
|
|
COMMAND
|
|
|
|
"${STRIP_BINARY_PATH}" -g
|
|
|
|
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.dll.a"
|
|
|
|
)
|
|
|
|
add_dependencies(install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-importlib-strip
|
|
|
|
install-binary-strip)
|
|
|
|
add_dependencies(install-mingw-w64-strip
|
|
|
|
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-importlib-strip)
|
|
|
|
endif ()
|
|
|
|
if (BUILD_STATIC_LIBS AND NOT META_HEADER_ONLY_LIB)
|
|
|
|
add_custom_target(
|
|
|
|
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-staticlib-strip
|
|
|
|
COMMAND
|
|
|
|
"${STRIP_BINARY_PATH}" -g
|
|
|
|
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.a"
|
|
|
|
)
|
|
|
|
add_dependencies(install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-staticlib-strip
|
|
|
|
install-binary-strip)
|
|
|
|
add_dependencies(install-mingw-w64-strip
|
|
|
|
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-staticlib-strip)
|
|
|
|
endif ()
|
|
|
|
endif ()
|
|
|
|
endif ()
|
2017-02-11 02:30:46 +01:00
|
|
|
|
|
|
|
set(TARGET_CONFIG_DONE YES)
|