Polish CMake code
This commit is contained in:
parent
a6fdb3369a
commit
8ffe0e6a51
|
@ -138,11 +138,12 @@ function (use_target)
|
||||||
set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};${ARGS_TARGET_NAME}" PARENT_SCOPE)
|
set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};${ARGS_TARGET_NAME}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# skip subsequent configuration if only the function includes are wanted
|
||||||
if (META_NO_3RDPARTY_CONFIG)
|
if (META_NO_3RDPARTY_CONFIG)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# option for deciding whether to build/use static or shared libraries
|
# add options for deciding whether to build/use static or shared libraries
|
||||||
if (("${META_PROJECT_TYPE}" STREQUAL "library")
|
if (("${META_PROJECT_TYPE}" STREQUAL "library")
|
||||||
OR ("${META_PROJECT_TYPE}" STREQUAL "plugin")
|
OR ("${META_PROJECT_TYPE}" STREQUAL "plugin")
|
||||||
OR ("${META_PROJECT_TYPE}" STREQUAL "qtplugin")
|
OR ("${META_PROJECT_TYPE}" STREQUAL "qtplugin")
|
||||||
|
|
|
@ -34,29 +34,29 @@ endif ()
|
||||||
# add target for building the application
|
# add target for building the application
|
||||||
if (ANDROID)
|
if (ANDROID)
|
||||||
# create a shared library which can be loaded from the Java-side
|
# create a shared library which can be loaded from the Java-side
|
||||||
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} SHARED ${GUI_TYPE} ${ALL_FILES})
|
add_library(${META_TARGET_NAME} SHARED ${GUI_TYPE} ${ALL_FILES})
|
||||||
else ()
|
else ()
|
||||||
add_executable(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} ${GUI_TYPE} ${ALL_FILES})
|
add_executable(${META_TARGET_NAME} ${GUI_TYPE} ${ALL_FILES})
|
||||||
endif ()
|
endif ()
|
||||||
message(STATUS LINKING ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
message(STATUS LINKING ${META_TARGET_NAME}
|
||||||
PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
||||||
PRIVATE "${PRIVATE_LIBRARIES}")
|
PRIVATE "${PRIVATE_LIBRARIES}")
|
||||||
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_link_libraries(${META_TARGET_NAME}
|
||||||
PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
||||||
PRIVATE "${PRIVATE_LIBRARIES}")
|
PRIVATE "${PRIVATE_LIBRARIES}")
|
||||||
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_include_directories(${META_TARGET_NAME}
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_SHARED_INCLUDE_DIRS}
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_SHARED_INCLUDE_DIRS}
|
||||||
PRIVATE "${PRIVATE_INCLUDE_DIRS}")
|
PRIVATE "${PRIVATE_INCLUDE_DIRS}")
|
||||||
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_compile_definitions(${META_TARGET_NAME}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
||||||
PRIVATE
|
PRIVATE
|
||||||
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
||||||
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_compile_options(${META_TARGET_NAME}
|
||||||
PUBLIC "${META_PUBLIC_COMPILE_OPTIONS}"
|
PUBLIC "${META_PUBLIC_COMPILE_OPTIONS}"
|
||||||
PRIVATE "${META_PRIVATE_COMPILE_OPTIONS}")
|
PRIVATE "${META_PRIVATE_COMPILE_OPTIONS}")
|
||||||
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
set_target_properties(${META_TARGET_NAME}
|
||||||
PROPERTIES CXX_STANDARD
|
PROPERTIES CXX_STANDARD
|
||||||
"${META_CXX_STANDARD}"
|
"${META_CXX_STANDARD}"
|
||||||
LINK_SEARCH_START_STATIC
|
LINK_SEARCH_START_STATIC
|
||||||
|
@ -70,16 +70,16 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
# add install target for binary
|
# add install target for binary
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(BUNDLE_INSTALL_DESTINATION bin CACHE STRING "specifies the install destination for bundles")
|
set(BUNDLE_INSTALL_DESTINATION bin CACHE STRING "specifies the install destination for bundles")
|
||||||
install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
install(TARGETS ${META_TARGET_NAME}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
BUNDLE DESTINATION "${BUNDLE_INSTALL_DESTINATION}" COMPONENT binary)
|
BUNDLE DESTINATION "${BUNDLE_INSTALL_DESTINATION}" COMPONENT binary)
|
||||||
elseif (ANDROID)
|
elseif (ANDROID)
|
||||||
install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
install(TARGETS ${META_TARGET_NAME}
|
||||||
RUNTIME DESTINATION bin COMPONENT binary
|
RUNTIME DESTINATION bin COMPONENT binary
|
||||||
LIBRARY DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary
|
LIBRARY DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary
|
||||||
ARCHIVE DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary)
|
ARCHIVE DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary)
|
||||||
else ()
|
else ()
|
||||||
install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} RUNTIME DESTINATION bin COMPONENT binary)
|
install(TARGETS ${META_TARGET_NAME} RUNTIME DESTINATION bin COMPONENT binary)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT TARGET install-binary)
|
if (NOT TARGET install-binary)
|
||||||
|
@ -87,14 +87,14 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=binary -P
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=binary -P
|
||||||
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(install-binary ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-binary ${META_TARGET_NAME})
|
||||||
|
|
||||||
# add mingw-w64 specific install target
|
# add mingw-w64 specific install target
|
||||||
if (NOT TARGET install-mingw-w64)
|
if (NOT TARGET install-mingw-w64)
|
||||||
add_custom_target(install-mingw-w64)
|
add_custom_target(install-mingw-w64)
|
||||||
add_dependencies(install-mingw-w64 install-binary)
|
add_dependencies(install-mingw-w64 install-binary)
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(install-mingw-w64 ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-mingw-w64 ${META_TARGET_NAME})
|
||||||
|
|
||||||
# add install target for desktop entries and icons
|
# add install target for desktop entries and icons
|
||||||
foreach (DESKTOP_FILE ${DESKTOP_FILES})
|
foreach (DESKTOP_FILE ${DESKTOP_FILES})
|
||||||
|
@ -109,13 +109,13 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=desktop -P
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=desktop -P
|
||||||
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(install-desktop ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-desktop ${META_TARGET_NAME})
|
||||||
if (NOT TARGET install-appimage)
|
if (NOT TARGET install-appimage)
|
||||||
add_custom_target(install-appimage
|
add_custom_target(install-appimage
|
||||||
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=appimage -P
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=appimage -P
|
||||||
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(install-appimage ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-appimage ${META_TARGET_NAME})
|
||||||
|
|
||||||
# add install target for stripped binaries
|
# add install target for stripped binaries
|
||||||
if (NOT TARGET install-binary-strip)
|
if (NOT TARGET install-binary-strip)
|
||||||
|
@ -123,7 +123,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P
|
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P
|
||||||
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(install-binary-strip ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-binary-strip ${META_TARGET_NAME})
|
||||||
|
|
||||||
# add mingw-w64 specific install targets
|
# add mingw-w64 specific install targets
|
||||||
if (MINGW)
|
if (MINGW)
|
||||||
|
@ -199,7 +199,7 @@ function(add_desktop_file)
|
||||||
list(GET META_APP_ACTION_${ACTION_VAR} 2 ACTION_ARGS)
|
list(GET META_APP_ACTION_${ACTION_VAR} 2 ACTION_ARGS)
|
||||||
set(
|
set(
|
||||||
DESKTOP_FILE_ADDITIONAL_ENTRIES
|
DESKTOP_FILE_ADDITIONAL_ENTRIES
|
||||||
"${DESKTOP_FILE_ADDITIONAL_ENTRIES}\n[Desktop Action ${ACTION_ID}]\nName=${ACTION_NAME}\nExec=${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} ${ACTION_ARGS}"
|
"${DESKTOP_FILE_ADDITIONAL_ENTRIES}\n[Desktop Action ${ACTION_ID}]\nName=${ACTION_NAME}\nExec=${META_TARGET_NAME} ${ACTION_ARGS}"
|
||||||
)
|
)
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ function(add_desktop_file)
|
||||||
DESKTOP_FILE_GENERIC_NAME "${META_GENERIC_NAME}"
|
DESKTOP_FILE_GENERIC_NAME "${META_GENERIC_NAME}"
|
||||||
DESKTOP_FILE_DESCRIPTION "${META_APP_DESCRIPTION}"
|
DESKTOP_FILE_DESCRIPTION "${META_APP_DESCRIPTION}"
|
||||||
DESKTOP_FILE_CATEGORIES "${META_APP_CATEGORIES}"
|
DESKTOP_FILE_CATEGORIES "${META_APP_CATEGORIES}"
|
||||||
DESKTOP_FILE_CMD "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}"
|
DESKTOP_FILE_CMD "${META_TARGET_NAME}"
|
||||||
DESKTOP_FILE_ICON "${META_PROJECT_NAME}"
|
DESKTOP_FILE_ICON "${META_PROJECT_NAME}"
|
||||||
DESKTOP_FILE_ADDITIONAL_ENTRIES "${DESKTOP_FILE_ADDITIONAL_ENTRIES}"
|
DESKTOP_FILE_ADDITIONAL_ENTRIES "${DESKTOP_FILE_ADDITIONAL_ENTRIES}"
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,10 +12,12 @@ if (NOT META_APP_DESCRIPTION)
|
||||||
message(FATAL_ERROR "No project name (META_APP_DESCRIPTION) specified.")
|
message(FATAL_ERROR "No project name (META_APP_DESCRIPTION) specified.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# define a few variables
|
||||||
|
set(META_TARGET_NAME "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
||||||
string(TOUPPER "${CMAKE_BUILD_TYPE}" META_CURRENT_CONFIGURATION)
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" META_CURRENT_CONFIGURATION)
|
||||||
|
|
||||||
# set project name (displayed in Qt Creator)
|
# set project name (displayed in Qt Creator)
|
||||||
message(STATUS "Configuring project ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
message(STATUS "Configuring project ${META_TARGET_NAME}")
|
||||||
project(${META_PROJECT_NAME})
|
project(${META_PROJECT_NAME})
|
||||||
|
|
||||||
# set META_PROJECT_VARNAME and META_PROJECT_VARNAME_UPPER if not specified explicitely
|
# set META_PROJECT_VARNAME and META_PROJECT_VARNAME_UPPER if not specified explicitely
|
||||||
|
@ -55,9 +57,9 @@ if (NOT META_VERSION_PATCH)
|
||||||
set(META_VERSION_PATCH 0)
|
set(META_VERSION_PATCH 0)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# set META_ID to META_PROJECT_NAME if not specified
|
# set META_ID to target name if not specified
|
||||||
if (NOT META_ID)
|
if (NOT META_ID)
|
||||||
set(META_ID "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
set(META_ID "${META_TARGET_NAME}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# set bugtracker URL
|
# set bugtracker URL
|
||||||
|
@ -129,7 +131,7 @@ if (APPEND_GIT_REVISION)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# set TARGET_EXECUTABLE which is used to refer to the target executable at its installation location
|
# set TARGET_EXECUTABLE which is used to refer to the target executable at its installation location
|
||||||
set(TARGET_EXECUTABLE "${CMAKE_INSTALL_PREFIX}/bin/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
set(TARGET_EXECUTABLE "${CMAKE_INSTALL_PREFIX}/bin/${META_TARGET_NAME}")
|
||||||
|
|
||||||
# create header for feature detection
|
# create header for feature detection
|
||||||
if (META_FEATURES_FOR_COMPILER_DETECTION_HEADER)
|
if (META_FEATURES_FOR_COMPILER_DETECTION_HEADER)
|
||||||
|
@ -270,7 +272,7 @@ if (NOT META_NO_TIDY AND CLANG_FORMAT_ENABLED AND FORMATABLE_FILES AND EXISTS "$
|
||||||
if (NOT CLANG_FORMAT_BIN)
|
if (NOT CLANG_FORMAT_BIN)
|
||||||
message(FATAL_ERROR "Unable to add tidy target; clang-format not found")
|
message(FATAL_ERROR "Unable to add tidy target; clang-format not found")
|
||||||
endif ()
|
endif ()
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tidy"
|
add_custom_target("${META_TARGET_NAME}_tidy"
|
||||||
COMMAND "${CLANG_FORMAT_BIN}" -style=file -i ${FORMATABLE_FILES}
|
COMMAND "${CLANG_FORMAT_BIN}" -style=file -i ${FORMATABLE_FILES}
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
COMMENT "Tidying ${META_PROJECT_NAME} sources using clang-format"
|
COMMENT "Tidying ${META_PROJECT_NAME} sources using clang-format"
|
||||||
|
@ -278,14 +280,14 @@ if (NOT META_NO_TIDY AND CLANG_FORMAT_ENABLED AND FORMATABLE_FILES AND EXISTS "$
|
||||||
if (NOT TARGET tidy)
|
if (NOT TARGET tidy)
|
||||||
add_custom_target(tidy)
|
add_custom_target(tidy)
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(tidy "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tidy")
|
add_dependencies(tidy "${META_TARGET_NAME}_tidy")
|
||||||
|
|
||||||
# also add a test to verify whether sources are tidy
|
# also add a test to verify whether sources are tidy
|
||||||
add_test(NAME "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tidy_test"
|
add_test(NAME "${META_TARGET_NAME}_tidy_test"
|
||||||
COMMAND "${CLANG_FORMAT_BIN}" -output-replacements-xml -style=file ${FORMATABLE_FILES}
|
COMMAND "${CLANG_FORMAT_BIN}" -output-replacements-xml -style=file ${FORMATABLE_FILES}
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
list(APPEND CHECK_TARGET_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format")
|
list(APPEND CHECK_TARGET_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format")
|
||||||
set_tests_properties("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tidy_test"
|
set_tests_properties("${META_TARGET_NAME}_tidy_test"
|
||||||
PROPERTIES FAIL_REGULAR_EXPRESSION
|
PROPERTIES FAIL_REGULAR_EXPRESSION
|
||||||
"<replacement.*>.*</replacement>"
|
"<replacement.*>.*</replacement>"
|
||||||
REQUIRED_FILES
|
REQUIRED_FILES
|
||||||
|
@ -301,7 +303,7 @@ if (NOT META_NO_TIDY AND CMAKE_FORMAT_ENABLED AND FORMATABLE_FILES_CMAKE)
|
||||||
if (NOT META_CMAKE_FORMAT_OPTIONS)
|
if (NOT META_CMAKE_FORMAT_OPTIONS)
|
||||||
set(META_CMAKE_FORMAT_OPTIONS --tab-size=4 --separate-ctrl-name-with-space=True --line-width=125)
|
set(META_CMAKE_FORMAT_OPTIONS --tab-size=4 --separate-ctrl-name-with-space=True --line-width=125)
|
||||||
endif ()
|
endif ()
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_cmake_tidy"
|
add_custom_target("${META_TARGET_NAME}_cmake_tidy"
|
||||||
COMMAND "${CMAKE_FORMAT_BIN}" --in-place ${META_CMAKE_FORMAT_OPTIONS} ${FORMATABLE_FILES_CMAKE}
|
COMMAND "${CMAKE_FORMAT_BIN}" --in-place ${META_CMAKE_FORMAT_OPTIONS} ${FORMATABLE_FILES_CMAKE}
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
COMMENT "Tidying ${META_PROJECT_NAME} sources using cmake-format"
|
COMMENT "Tidying ${META_PROJECT_NAME} sources using cmake-format"
|
||||||
|
@ -309,7 +311,7 @@ if (NOT META_NO_TIDY AND CMAKE_FORMAT_ENABLED AND FORMATABLE_FILES_CMAKE)
|
||||||
if (NOT TARGET tidy)
|
if (NOT TARGET tidy)
|
||||||
add_custom_target(tidy)
|
add_custom_target(tidy)
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(tidy "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_cmake_tidy")
|
add_dependencies(tidy "${META_TARGET_NAME}_cmake_tidy")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# add target for static code analysis using clang-tidy
|
# add target for static code analysis using clang-tidy
|
||||||
|
@ -337,7 +339,7 @@ if (NOT META_NO_STATIC_ANALYSIS AND FORMATABLE_FILES)
|
||||||
set(CLANG_TIDY_CXX_FLAGS "")
|
set(CLANG_TIDY_CXX_FLAGS "")
|
||||||
if (NOT META_HEADER_ONLY_LIB)
|
if (NOT META_HEADER_ONLY_LIB)
|
||||||
# deduce flags from target
|
# deduce flags from target
|
||||||
set(TARGET_NAME ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
set(TARGET_NAME ${META_TARGET_NAME})
|
||||||
if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS)
|
if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS)
|
||||||
set(TARGET_NAME "${TARGET_NAME}_static")
|
set(TARGET_NAME "${TARGET_NAME}_static")
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -381,13 +383,13 @@ if (NOT META_NO_STATIC_ANALYSIS AND FORMATABLE_FILES)
|
||||||
set_source_files_properties(${CLANG_TIDY_SYMBOLIC_OUTPUT_FILES} PROPERTIES SYMBOLIC YES)
|
set_source_files_properties(${CLANG_TIDY_SYMBOLIC_OUTPUT_FILES} PROPERTIES SYMBOLIC YES)
|
||||||
|
|
||||||
# add targets
|
# add targets
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static_check"
|
add_custom_target("${META_TARGET_NAME}_static_check"
|
||||||
DEPENDS ${CLANG_TIDY_SYMBOLIC_OUTPUT_FILES}
|
DEPENDS ${CLANG_TIDY_SYMBOLIC_OUTPUT_FILES}
|
||||||
COMMENT "Linting ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} sources using clang-tidy")
|
COMMENT "Linting ${META_TARGET_NAME} sources using clang-tidy")
|
||||||
if (NOT TARGET static-check)
|
if (NOT TARGET static-check)
|
||||||
add_custom_target(static-check)
|
add_custom_target(static-check)
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(static-check "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static_check")
|
add_dependencies(static-check "${META_TARGET_NAME}_static_check")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,9 @@ unset(INTERFACE_LINK_LIBRARIES_LIST)
|
||||||
unset(PROCESSED_DEPENDENCIES)
|
unset(PROCESSED_DEPENDENCIES)
|
||||||
unset(HAVE_OPENSSL)
|
unset(HAVE_OPENSSL)
|
||||||
if (NOT META_HEADER_ONLY_LIB)
|
if (NOT META_HEADER_ONLY_LIB)
|
||||||
get_target_property(LINK_LIBRARIES_LIST "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}" LINK_LIBRARIES)
|
get_target_property(LINK_LIBRARIES_LIST "${META_TARGET_NAME}" LINK_LIBRARIES)
|
||||||
endif()
|
endif()
|
||||||
get_target_property(INTERFACE_LINK_LIBRARIES_LIST "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}" INTERFACE_LINK_LIBRARIES)
|
get_target_property(INTERFACE_LINK_LIBRARIES_LIST "${META_TARGET_NAME}" INTERFACE_LINK_LIBRARIES)
|
||||||
foreach (DEPENDENCY IN LISTS LINK_LIBRARIES_LIST INTERFACE_LINK_LIBRARIES_LIST)
|
foreach (DEPENDENCY IN LISTS LINK_LIBRARIES_LIST INTERFACE_LINK_LIBRARIES_LIST)
|
||||||
if (NOT TARGET "${DEPENDENCY}" OR "${DEPENDENCY}" IN_LIST PROCESSED_DEPENDENCIES)
|
if (NOT TARGET "${DEPENDENCY}" OR "${DEPENDENCY}" IN_LIST PROCESSED_DEPENDENCIES)
|
||||||
continue()
|
continue()
|
||||||
|
@ -73,9 +73,9 @@ configure_file("${CONFIG_H_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/resource
|
||||||
# ensure generated include files can be included via #include "resources/config.h"
|
# ensure generated include files can be included via #include "resources/config.h"
|
||||||
if (NOT META_HEADER_ONLY_LIB)
|
if (NOT META_HEADER_ONLY_LIB)
|
||||||
foreach (TARGET_NAME
|
foreach (TARGET_NAME
|
||||||
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
${META_TARGET_NAME}
|
||||||
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
${META_TARGET_NAME}_tests
|
||||||
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib)
|
${META_TARGET_NAME}_testlib)
|
||||||
if (TARGET ${TARGET_NAME})
|
if (TARGET ${TARGET_NAME})
|
||||||
target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -30,7 +30,7 @@ endif ()
|
||||||
if (NOT DOXYGEN_BIN)
|
if (NOT DOXYGEN_BIN)
|
||||||
message(
|
message(
|
||||||
WARNING
|
WARNING
|
||||||
"Doxygen not found, unable to add target for generating API documentation for ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}"
|
"Doxygen not found, unable to add target for generating API documentation for ${META_TARGET_NAME}"
|
||||||
)
|
)
|
||||||
return()
|
return()
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -62,12 +62,12 @@ list_to_string(" " "\"${DOXY_PATH_PREFIX}" "\"" "${DOXY_INPUT_FILES}" DOXY_INPUT
|
||||||
configure_file("${DOXYGEN_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.config")
|
configure_file("${DOXYGEN_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.config")
|
||||||
|
|
||||||
# add target for generating API documentation
|
# add target for generating API documentation
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_apidoc"
|
add_custom_target("${META_TARGET_NAME}_apidoc"
|
||||||
COMMAND "${DOXYGEN_BIN}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.config")
|
COMMAND "${DOXYGEN_BIN}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.config")
|
||||||
if (NOT TARGET apidoc)
|
if (NOT TARGET apidoc)
|
||||||
add_custom_target(apidoc)
|
add_custom_target(apidoc)
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(apidoc "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_apidoc")
|
add_dependencies(apidoc "${META_TARGET_NAME}_apidoc")
|
||||||
|
|
||||||
# add install target for API documentation
|
# add install target for API documentation
|
||||||
if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
|
@ -84,5 +84,5 @@ endif ()
|
||||||
|
|
||||||
message(
|
message(
|
||||||
STATUS
|
STATUS
|
||||||
"Generating target for generating API documentation for ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} with Doxygen"
|
"Generating target for generating API documentation for ${META_TARGET_NAME} with Doxygen"
|
||||||
)
|
)
|
||||||
|
|
|
@ -102,38 +102,38 @@ endif()
|
||||||
|
|
||||||
# add library to be created, set libs to link against, set version and C++ standard
|
# add library to be created, set libs to link against, set version and C++ standard
|
||||||
if (META_HEADER_ONLY_LIB)
|
if (META_HEADER_ONLY_LIB)
|
||||||
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} INTERFACE)
|
add_library(${META_TARGET_NAME} INTERFACE)
|
||||||
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_link_libraries(${META_TARGET_NAME}
|
||||||
INTERFACE ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}" "${PRIVATE_LIBRARIES}")
|
INTERFACE ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}" "${PRIVATE_LIBRARIES}")
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
${META_TARGET_NAME}
|
||||||
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
||||||
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS})
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS})
|
||||||
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_compile_definitions(${META_TARGET_NAME}
|
||||||
INTERFACE
|
INTERFACE
|
||||||
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
||||||
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
||||||
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_compile_options(${META_TARGET_NAME}
|
||||||
INTERFACE "${META_PUBLIC_COMPILE_OPTIONS}"
|
INTERFACE "${META_PUBLIC_COMPILE_OPTIONS}"
|
||||||
"${META_PRIVATE_COMPILE_OPTIONS}")
|
"${META_PRIVATE_COMPILE_OPTIONS}")
|
||||||
else ()
|
else ()
|
||||||
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} ${META_LIBRARY_TYPE} ${ALL_FILES})
|
add_library(${META_TARGET_NAME} ${META_LIBRARY_TYPE} ${ALL_FILES})
|
||||||
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_link_libraries(${META_TARGET_NAME}
|
||||||
PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
||||||
PRIVATE "${PRIVATE_LIBRARIES}")
|
PRIVATE "${PRIVATE_LIBRARIES}")
|
||||||
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_include_directories(${META_TARGET_NAME}
|
||||||
PUBLIC $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
PUBLIC $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
||||||
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}
|
||||||
PRIVATE "${PRIVATE_INCLUDE_DIRS}")
|
PRIVATE "${PRIVATE_INCLUDE_DIRS}")
|
||||||
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_compile_definitions(${META_TARGET_NAME}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
||||||
PRIVATE
|
PRIVATE
|
||||||
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
||||||
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
target_compile_options(${META_TARGET_NAME}
|
||||||
PUBLIC "${META_PUBLIC_LIB_COMPILE_OPTIONS}"
|
PUBLIC "${META_PUBLIC_LIB_COMPILE_OPTIONS}"
|
||||||
PRIVATE "${META_PRIVATE_LIB_COMPILE_OPTIONS}")
|
PRIVATE "${META_PRIVATE_LIB_COMPILE_OPTIONS}")
|
||||||
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
set_target_properties(${META_TARGET_NAME}
|
||||||
PROPERTIES VERSION
|
PROPERTIES VERSION
|
||||||
"${META_VESION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
"${META_VESION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
||||||
SOVERSION
|
SOVERSION
|
||||||
|
@ -159,21 +159,21 @@ endif()
|
||||||
if (META_HEADER_ONLY_LIB)
|
if (META_HEADER_ONLY_LIB)
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
|
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")
|
"// not belonging to a real target, only for header-only lib files showing up in Qt Creator")
|
||||||
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
add_library(${META_TARGET_NAME}_interface_sources_for_qtcreator
|
||||||
EXCLUDE_FROM_ALL
|
EXCLUDE_FROM_ALL
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
|
"${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
|
||||||
${HEADER_FILES})
|
${HEADER_FILES})
|
||||||
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
target_include_directories(${META_TARGET_NAME}_interface_sources_for_qtcreator
|
||||||
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
|
||||||
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS})
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS})
|
||||||
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
target_compile_definitions(${META_TARGET_NAME}_interface_sources_for_qtcreator
|
||||||
INTERFACE
|
INTERFACE
|
||||||
"${META_PUBLIC_LIB_COMPILE_DEFINITIONS}"
|
"${META_PUBLIC_LIB_COMPILE_DEFINITIONS}"
|
||||||
"${META_PRIVATE_LIB_COMPILE_DEFINITIONS}")
|
"${META_PRIVATE_LIB_COMPILE_DEFINITIONS}")
|
||||||
target_compile_options(
|
target_compile_options(
|
||||||
${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
${META_TARGET_NAME}_interface_sources_for_qtcreator
|
||||||
INTERFACE "${META_PUBLIC_LIB_COMPILE_OPTIONS}" "${META_PRIVATE_LIB_COMPILE_OPTIONS}")
|
INTERFACE "${META_PUBLIC_LIB_COMPILE_OPTIONS}" "${META_PRIVATE_LIB_COMPILE_OPTIONS}")
|
||||||
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_interface_sources_for_qtcreator
|
set_target_properties(${META_TARGET_NAME}_interface_sources_for_qtcreator
|
||||||
PROPERTIES VERSION
|
PROPERTIES VERSION
|
||||||
"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
"${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}"
|
||||||
SOVERSION
|
SOVERSION
|
||||||
|
@ -239,7 +239,7 @@ macro (depends_for_pc DEPENDS OUTPUT_VAR_PKGS OUTPUT_VAR_LIBS)
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endmacro ()
|
endmacro ()
|
||||||
unset(PC_FILES)
|
unset(PC_FILES)
|
||||||
set(META_PROJECT_NAME_FOR_PC "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
set(META_PROJECT_NAME_FOR_PC "${META_TARGET_NAME}")
|
||||||
depends_for_pc(META_PUBLIC_LIB_DEPENDS META_PUBLIC_PC_PKGS META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
depends_for_pc(META_PUBLIC_LIB_DEPENDS META_PUBLIC_PC_PKGS META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
||||||
depends_for_pc(META_PRIVATE_LIB_DEPENDS META_PRIVATE_PC_PKGS META_PRIVATE_LIB_DEPENDS_FOR_PC)
|
depends_for_pc(META_PRIVATE_LIB_DEPENDS META_PRIVATE_PC_PKGS META_PRIVATE_LIB_DEPENDS_FOR_PC)
|
||||||
foreach (COMPILE_DEFINITION ${META_PUBLIC_LIB_COMPILE_DEFINITIONS})
|
foreach (COMPILE_DEFINITION ${META_PUBLIC_LIB_COMPILE_DEFINITIONS})
|
||||||
|
@ -247,7 +247,7 @@ foreach (COMPILE_DEFINITION ${META_PUBLIC_LIB_COMPILE_DEFINITIONS})
|
||||||
endforeach ()
|
endforeach ()
|
||||||
if (NOT META_HEADER_ONLY_LIB)
|
if (NOT META_HEADER_ONLY_LIB)
|
||||||
set(META_PUBLIC_LIB_DEPENDS_FOR_PC
|
set(META_PUBLIC_LIB_DEPENDS_FOR_PC
|
||||||
" -l${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
" -l${META_TARGET_NAME}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
||||||
endif ()
|
endif ()
|
||||||
if (META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
if (META_PUBLIC_LIB_DEPENDS_FOR_PC)
|
||||||
set(META_PUBLIC_LIB_DEPENDS_FOR_PC " -L\${libdir}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
set(META_PUBLIC_LIB_DEPENDS_FOR_PC " -L\${libdir}${META_PUBLIC_LIB_DEPENDS_FOR_PC}")
|
||||||
|
@ -311,13 +311,13 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# add install targets and export targets
|
# add install targets and export targets
|
||||||
install(TARGETS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}
|
install(TARGETS ${META_TARGET_NAME}
|
||||||
EXPORT ${META_PROJECT_NAME}Targets
|
EXPORT ${META_PROJECT_NAME}Targets
|
||||||
RUNTIME DESTINATION bin COMPONENT binary
|
RUNTIME DESTINATION bin COMPONENT binary
|
||||||
LIBRARY DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary
|
LIBRARY DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary
|
||||||
ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary)
|
ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary)
|
||||||
add_dependencies(install-binary ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-binary ${META_TARGET_NAME})
|
||||||
add_dependencies(install-binary-strip ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
add_dependencies(install-binary-strip ${META_TARGET_NAME})
|
||||||
install(EXPORT ${META_PROJECT_NAME}Targets
|
install(EXPORT ${META_PROJECT_NAME}Targets
|
||||||
DESTINATION "share/${META_PROJECT_NAME}/cmake"
|
DESTINATION "share/${META_PROJECT_NAME}/cmake"
|
||||||
EXPORT_LINK_INTERFACE_LIBRARIES
|
EXPORT_LINK_INTERFACE_LIBRARIES
|
||||||
|
@ -390,27 +390,27 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
||||||
endif ()
|
endif ()
|
||||||
if (BUILD_SHARED_LIBS AND NOT META_HEADER_ONLY_LIB)
|
if (BUILD_SHARED_LIBS AND NOT META_HEADER_ONLY_LIB)
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-importlib-strip
|
install-${META_TARGET_NAME}-mingw-w64-importlib-strip
|
||||||
COMMAND
|
COMMAND
|
||||||
"${STRIP_BINARY_PATH}" -g
|
"${STRIP_BINARY_PATH}" -g
|
||||||
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.dll.a"
|
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${META_TARGET_NAME}.dll.a"
|
||||||
)
|
)
|
||||||
add_dependencies(install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-importlib-strip
|
add_dependencies(install-${META_TARGET_NAME}-mingw-w64-importlib-strip
|
||||||
install-binary-strip)
|
install-binary-strip)
|
||||||
add_dependencies(install-mingw-w64-strip
|
add_dependencies(install-mingw-w64-strip
|
||||||
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-importlib-strip)
|
install-${META_TARGET_NAME}-mingw-w64-importlib-strip)
|
||||||
endif ()
|
endif ()
|
||||||
if (BUILD_STATIC_LIBS AND NOT META_HEADER_ONLY_LIB)
|
if (BUILD_STATIC_LIBS AND NOT META_HEADER_ONLY_LIB)
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-staticlib-strip
|
install-${META_TARGET_NAME}-mingw-w64-staticlib-strip
|
||||||
COMMAND
|
COMMAND
|
||||||
"${STRIP_BINARY_PATH}" -g
|
"${STRIP_BINARY_PATH}" -g
|
||||||
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}.a"
|
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${META_TARGET_NAME}.a"
|
||||||
)
|
)
|
||||||
add_dependencies(install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-staticlib-strip
|
add_dependencies(install-${META_TARGET_NAME}-mingw-w64-staticlib-strip
|
||||||
install-binary-strip)
|
install-binary-strip)
|
||||||
add_dependencies(install-mingw-w64-strip
|
add_dependencies(install-mingw-w64-strip
|
||||||
install-${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}-mingw-w64-staticlib-strip)
|
install-${META_TARGET_NAME}-mingw-w64-staticlib-strip)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -81,23 +81,23 @@ if (EXCLUDE_TESTS_FROM_ALL)
|
||||||
else ()
|
else ()
|
||||||
unset(TESTS_EXCLUSION)
|
unset(TESTS_EXCLUSION)
|
||||||
endif ()
|
endif ()
|
||||||
add_executable(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
add_executable(${META_TARGET_NAME}_tests
|
||||||
${TESTS_EXCLUSION}
|
${TESTS_EXCLUSION}
|
||||||
${TEST_HEADER_FILES}
|
${TEST_HEADER_FILES}
|
||||||
${TEST_SRC_FILES})
|
${TEST_SRC_FILES})
|
||||||
|
|
||||||
# add top-level target to build all test targets conveniently, also when excluded from "all" target
|
# add top-level target to build all test targets conveniently, also when excluded from "all" target
|
||||||
if (NOT TARGET tests)
|
if (NOT TARGET tests)
|
||||||
add_custom_target(tests DEPENDS ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests)
|
add_custom_target(tests DEPENDS ${META_TARGET_NAME}_tests)
|
||||||
else ()
|
else ()
|
||||||
add_dependencies(tests ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests)
|
add_dependencies(tests ${META_TARGET_NAME}_tests)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# handle testing a library (which is default project type)
|
# handle testing a library (which is default project type)
|
||||||
if (META_PROJECT_IS_LIBRARY)
|
if (META_PROJECT_IS_LIBRARY)
|
||||||
# when testing a library, the test application always needs to link against it
|
# when testing a library, the test application always needs to link against it
|
||||||
list(APPEND TEST_LIBRARIES ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
|
list(APPEND TEST_LIBRARIES ${META_TARGET_NAME})
|
||||||
message(STATUS "Linking test target against ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
message(STATUS "Linking test target against ${META_TARGET_NAME}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# handle testing an application
|
# handle testing an application
|
||||||
|
@ -107,23 +107,23 @@ if (META_PROJECT_IS_APPLICATION)
|
||||||
# create target for the 'testlib'
|
# create target for the 'testlib'
|
||||||
set(TESTLIB_FILES ${HEADER_FILES} ${SRC_FILES} ${WIDGETS_FILES} ${QML_FILES} ${RES_FILES} ${QM_FILES})
|
set(TESTLIB_FILES ${HEADER_FILES} ${SRC_FILES} ${WIDGETS_FILES} ${QML_FILES} ${RES_FILES} ${QM_FILES})
|
||||||
list(REMOVE_ITEM TESTLIB_FILES main.h main.cpp)
|
list(REMOVE_ITEM TESTLIB_FILES main.h main.cpp)
|
||||||
add_library(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib SHARED ${TESTLIB_FILES})
|
add_library(${META_TARGET_NAME}_testlib SHARED ${TESTLIB_FILES})
|
||||||
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
target_link_libraries(${META_TARGET_NAME}_testlib
|
||||||
PUBLIC ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
PUBLIC ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
||||||
PRIVATE "${PRIVATE_LIBRARIES}")
|
PRIVATE "${PRIVATE_LIBRARIES}")
|
||||||
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
target_include_directories(${META_TARGET_NAME}_testlib
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}
|
||||||
PRIVATE "${PRIVATE_INCLUDE_DIRS}")
|
PRIVATE "${PRIVATE_INCLUDE_DIRS}")
|
||||||
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
target_compile_definitions(${META_TARGET_NAME}_testlib
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
||||||
PRIVATE
|
PRIVATE
|
||||||
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
||||||
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
target_compile_options(${META_TARGET_NAME}_testlib
|
||||||
PUBLIC "${META_PUBLIC_COMPILE_OPTIONS}"
|
PUBLIC "${META_PUBLIC_COMPILE_OPTIONS}"
|
||||||
PRIVATE "${META_PRIVATE_COMPILE_OPTIONS}")
|
PRIVATE "${META_PRIVATE_COMPILE_OPTIONS}")
|
||||||
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
set_target_properties(${META_TARGET_NAME}_testlib
|
||||||
PROPERTIES CXX_STANDARD
|
PROPERTIES CXX_STANDARD
|
||||||
"${META_CXX_STANDARD}"
|
"${META_CXX_STANDARD}"
|
||||||
LINK_SEARCH_START_STATIC
|
LINK_SEARCH_START_STATIC
|
||||||
|
@ -133,36 +133,36 @@ if (META_PROJECT_IS_APPLICATION)
|
||||||
AUTOGEN_TARGET_DEPENDS
|
AUTOGEN_TARGET_DEPENDS
|
||||||
"${AUTOGEN_DEPS}")
|
"${AUTOGEN_DEPS}")
|
||||||
if (CPP_UNIT_CONFIG_${META_PROJECT_NAME}_FOUND)
|
if (CPP_UNIT_CONFIG_${META_PROJECT_NAME}_FOUND)
|
||||||
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
target_include_directories(${META_TARGET_NAME}_testlib
|
||||||
PRIVATE "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_INCLUDE_DIRS}")
|
PRIVATE "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_INCLUDE_DIRS}")
|
||||||
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
target_compile_options(${META_TARGET_NAME}_testlib
|
||||||
PRIVATE "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_CFLAGS_OTHER}")
|
PRIVATE "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_CFLAGS_OTHER}")
|
||||||
endif ()
|
endif ()
|
||||||
# link tests against it
|
# link tests against it
|
||||||
list(APPEND TEST_LIBRARIES ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib)
|
list(APPEND TEST_LIBRARIES ${META_TARGET_NAME}_testlib)
|
||||||
# ensure all symbols are visible (man gcc: "Despite the nomenclature, default always means public")
|
# ensure all symbols are visible (man gcc: "Despite the nomenclature, default always means public")
|
||||||
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib
|
set_target_properties(${META_TARGET_NAME}_testlib
|
||||||
PROPERTIES CXX_VISIBILITY_PRESET default)
|
PROPERTIES CXX_VISIBILITY_PRESET default)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# configure test target
|
# configure test target
|
||||||
target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
target_link_libraries(${META_TARGET_NAME}_tests
|
||||||
PUBLIC ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
PUBLIC ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}"
|
||||||
PRIVATE "${TEST_LIBRARIES}" "${PRIVATE_LIBRARIES}")
|
PRIVATE "${TEST_LIBRARIES}" "${PRIVATE_LIBRARIES}")
|
||||||
target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
target_include_directories(${META_TARGET_NAME}_tests
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}
|
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}
|
||||||
PRIVATE ${TEST_INCLUDE_DIRS} "${PRIVATE_INCLUDE_DIRS}")
|
PRIVATE ${TEST_INCLUDE_DIRS} "${PRIVATE_INCLUDE_DIRS}")
|
||||||
target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
target_compile_definitions(${META_TARGET_NAME}_tests
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
"${META_PUBLIC_COMPILE_DEFINITIONS}"
|
||||||
PRIVATE
|
PRIVATE
|
||||||
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
"${META_PRIVATE_COMPILE_DEFINITIONS}")
|
||||||
target_compile_options(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
target_compile_options(${META_TARGET_NAME}_tests
|
||||||
PUBLIC "${META_PUBLIC_COMPILE_OPTIONS}"
|
PUBLIC "${META_PUBLIC_COMPILE_OPTIONS}"
|
||||||
PRIVATE "${META_PRIVATE_COMPILE_OPTIONS}")
|
PRIVATE "${META_PRIVATE_COMPILE_OPTIONS}")
|
||||||
set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
set_target_properties(${META_TARGET_NAME}_tests
|
||||||
PROPERTIES CXX_STANDARD
|
PROPERTIES CXX_STANDARD
|
||||||
"${META_CXX_STANDARD}"
|
"${META_CXX_STANDARD}"
|
||||||
LINK_SEARCH_START_STATIC
|
LINK_SEARCH_START_STATIC
|
||||||
|
@ -173,11 +173,11 @@ set_target_properties(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests
|
||||||
# make the test recognized by ctest
|
# make the test recognized by ctest
|
||||||
unset(RUN_TESTS_APPLICATION_ARG)
|
unset(RUN_TESTS_APPLICATION_ARG)
|
||||||
if (META_PROJECT_TYPE STREQUAL "application")
|
if (META_PROJECT_TYPE STREQUAL "application")
|
||||||
set(RUN_TESTS_APPLICATION_ARGS -a "$<TARGET_FILE:${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}>")
|
set(RUN_TESTS_APPLICATION_ARGS -a "$<TARGET_FILE:${META_TARGET_NAME}>")
|
||||||
endif ()
|
endif ()
|
||||||
if (NOT META_TEST_TARGET_IS_MANUAL)
|
if (NOT META_TEST_TARGET_IS_MANUAL)
|
||||||
add_test(NAME ${META_PROJECT_NAME}_run_tests
|
add_test(NAME ${META_PROJECT_NAME}_run_tests
|
||||||
COMMAND ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests -p "${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w
|
COMMAND ${META_TARGET_NAME}_tests -p "${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" ${RUN_TESTS_APPLICATION_ARGS})
|
"${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" ${RUN_TESTS_APPLICATION_ARGS})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
@ -185,22 +185,22 @@ endif ()
|
||||||
if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
# define path of raw profile data
|
# define path of raw profile data
|
||||||
set(LLVM_PROFILE_RAW_FILE
|
set(LLVM_PROFILE_RAW_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests.profraw")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests.profraw")
|
||||||
# define path of list with additional raw profile data from fork processes spawned during tests
|
# define path of list with additional raw profile data from fork processes spawned during tests
|
||||||
set(LLVM_PROFILE_RAW_LIST_FILE
|
set(LLVM_PROFILE_RAW_LIST_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests.profraw.list")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests.profraw.list")
|
||||||
# define path of merged profile data generated from raw profiling data
|
# define path of merged profile data generated from raw profiling data
|
||||||
set(LLVM_PROFILE_DATA_FILE
|
set(LLVM_PROFILE_DATA_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests.profdata")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests.profdata")
|
||||||
# define paths of output files
|
# define paths of output files
|
||||||
set(COVERAGE_REPORT_FILE
|
set(COVERAGE_REPORT_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage.txt")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests_coverage.txt")
|
||||||
set(COVERAGE_PER_FILE_REPORT_FILE
|
set(COVERAGE_PER_FILE_REPORT_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage_per_file.txt")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests_coverage_per_file.txt")
|
||||||
set(COVERAGE_OVERALL_REPORT_FILE
|
set(COVERAGE_OVERALL_REPORT_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage_overall.txt")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests_coverage_overall.txt")
|
||||||
set(COVERAGE_HTML_REPORT_FILE
|
set(COVERAGE_HTML_REPORT_FILE
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage.html")
|
"${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}_tests_coverage.html")
|
||||||
set(COVERAGE_REPORT_FILES "${COVERAGE_REPORT_FILE}")
|
set(COVERAGE_REPORT_FILES "${COVERAGE_REPORT_FILE}")
|
||||||
# specify where to store raw clang profiling data via environment variable
|
# specify where to store raw clang profiling data via environment variable
|
||||||
if (NOT META_TEST_TARGET_IS_MANUAL)
|
if (NOT META_TEST_TARGET_IS_MANUAL)
|
||||||
|
@ -213,12 +213,12 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
OUTPUT "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}"
|
OUTPUT "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}"
|
||||||
COMMAND "${CMAKE_COMMAND}" -E env "LLVM_PROFILE_FILE=${LLVM_PROFILE_RAW_FILE}"
|
COMMAND "${CMAKE_COMMAND}" -E env "LLVM_PROFILE_FILE=${LLVM_PROFILE_RAW_FILE}"
|
||||||
"LLVM_PROFILE_LIST_FILE=${LLVM_PROFILE_RAW_LIST_FILE}"
|
"LLVM_PROFILE_LIST_FILE=${LLVM_PROFILE_RAW_LIST_FILE}"
|
||||||
$<TARGET_FILE:${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests> -p
|
$<TARGET_FILE:${META_TARGET_NAME}_tests> -p
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w "${CMAKE_CURRENT_BINARY_DIR}/testworkingdir"
|
"${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w "${CMAKE_CURRENT_BINARY_DIR}/testworkingdir"
|
||||||
${RUN_TESTS_APPLICATION_ARGS}
|
${RUN_TESTS_APPLICATION_ARGS}
|
||||||
COMMENT
|
COMMENT
|
||||||
"Executing ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests to generate raw profiling data for source-based coverage report"
|
"Executing ${META_TARGET_NAME}_tests to generate raw profiling data for source-based coverage report"
|
||||||
DEPENDS "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests")
|
DEPENDS "${META_TARGET_NAME}_tests")
|
||||||
find_program(LLVM_PROFDATA_BIN llvm-profdata)
|
find_program(LLVM_PROFDATA_BIN llvm-profdata)
|
||||||
find_program(LLVM_COV_BIN llvm-cov)
|
find_program(LLVM_COV_BIN llvm-cov)
|
||||||
if (LLVM_PROFDATA_BIN AND LLVM_COV_BIN)
|
if (LLVM_PROFDATA_BIN AND LLVM_COV_BIN)
|
||||||
|
@ -243,10 +243,10 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
endif ()
|
endif ()
|
||||||
# determine the target file for llvm-cov
|
# determine the target file for llvm-cov
|
||||||
if (NOT META_HEADER_ONLY_LIB)
|
if (NOT META_HEADER_ONLY_LIB)
|
||||||
set(LLVM_COV_TARGET_FILE $<TARGET_FILE:${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}>
|
set(LLVM_COV_TARGET_FILE $<TARGET_FILE:${META_TARGET_NAME}>
|
||||||
$<TARGET_FILE:${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests>)
|
$<TARGET_FILE:${META_TARGET_NAME}_tests>)
|
||||||
else ()
|
else ()
|
||||||
set(LLVM_COV_TARGET_FILE $<TARGET_FILE:${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests>)
|
set(LLVM_COV_TARGET_FILE $<TARGET_FILE:${META_TARGET_NAME}_tests>)
|
||||||
endif ()
|
endif ()
|
||||||
# generate coverage report with statistics per function
|
# generate coverage report with statistics per function
|
||||||
unset(LLVM_COV_ADDITIONAL_OPTIONS)
|
unset(LLVM_COV_ADDITIONAL_OPTIONS)
|
||||||
|
@ -276,7 +276,7 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
list(APPEND COVERAGE_REPORT_FILES "${COVERAGE_PER_FILE_REPORT_FILE}")
|
list(APPEND COVERAGE_REPORT_FILES "${COVERAGE_PER_FILE_REPORT_FILE}")
|
||||||
endif ()
|
endif ()
|
||||||
# add target for the coverage reports
|
# add target for the coverage reports
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage_summary"
|
add_custom_target("${META_TARGET_NAME}_tests_coverage_summary"
|
||||||
DEPENDS ${COVERAGE_REPORT_FILES})
|
DEPENDS ${COVERAGE_REPORT_FILES})
|
||||||
# generate coverage overall report (total region/line coverage) NOTE: added before release of LLVM 5 where coverage
|
# generate coverage overall report (total region/line coverage) NOTE: added before release of LLVM 5 where coverage
|
||||||
# report with statistics per file could not be generated
|
# report with statistics per file could not be generated
|
||||||
|
@ -292,7 +292,7 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
"${COVERAGE_OVERALL_REPORT_FILE}"
|
"${COVERAGE_OVERALL_REPORT_FILE}"
|
||||||
COMMENT "Generating coverage report (overall figures)"
|
COMMENT "Generating coverage report (overall figures)"
|
||||||
DEPENDS "${OVERALL_COVERAGE_AKW_SCRIPT}" "${COVERAGE_REPORT_FILE}")
|
DEPENDS "${OVERALL_COVERAGE_AKW_SCRIPT}" "${COVERAGE_REPORT_FILE}")
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage_overall_summary"
|
add_custom_target("${META_TARGET_NAME}_tests_coverage_overall_summary"
|
||||||
DEPENDS "${COVERAGE_OVERALL_REPORT_FILE}")
|
DEPENDS "${COVERAGE_OVERALL_REPORT_FILE}")
|
||||||
# generate HTML document showing covered/uncovered code
|
# generate HTML document showing covered/uncovered code
|
||||||
add_custom_command(OUTPUT "${COVERAGE_HTML_REPORT_FILE}"
|
add_custom_command(OUTPUT "${COVERAGE_HTML_REPORT_FILE}"
|
||||||
|
@ -302,10 +302,10 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
COMMENT "Generating HTML document showing covered/uncovered code"
|
COMMENT "Generating HTML document showing covered/uncovered code"
|
||||||
DEPENDS "${LLVM_PROFILE_DATA_FILE}"
|
DEPENDS "${LLVM_PROFILE_DATA_FILE}"
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage_html"
|
add_custom_target("${META_TARGET_NAME}_tests_coverage_html"
|
||||||
DEPENDS "${COVERAGE_HTML_REPORT_FILE}")
|
DEPENDS "${COVERAGE_HTML_REPORT_FILE}")
|
||||||
# create target for all coverage docs
|
# create target for all coverage docs
|
||||||
add_custom_target("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage"
|
add_custom_target("${META_TARGET_NAME}_tests_coverage"
|
||||||
DEPENDS ${COVERAGE_REPORT_FILES}
|
DEPENDS ${COVERAGE_REPORT_FILES}
|
||||||
DEPENDS "${COVERAGE_OVERALL_REPORT_FILE}"
|
DEPENDS "${COVERAGE_OVERALL_REPORT_FILE}"
|
||||||
DEPENDS "${COVERAGE_HTML_REPORT_FILE}")
|
DEPENDS "${COVERAGE_HTML_REPORT_FILE}")
|
||||||
|
@ -313,7 +313,7 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
|
||||||
if (NOT TARGET coverage)
|
if (NOT TARGET coverage)
|
||||||
add_custom_target(coverage)
|
add_custom_target(coverage)
|
||||||
endif ()
|
endif ()
|
||||||
add_dependencies(coverage "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests_coverage")
|
add_dependencies(coverage "${META_TARGET_NAME}_tests_coverage")
|
||||||
else ()
|
else ()
|
||||||
message(
|
message(
|
||||||
FATAL_ERROR "Unable to generate target for coverage report because llvm-profdata and llvm-cov are not available."
|
FATAL_ERROR "Unable to generate target for coverage report because llvm-profdata and llvm-cov are not available."
|
||||||
|
@ -323,7 +323,7 @@ endif ()
|
||||||
|
|
||||||
# add the test executable to the dependencies of the check target
|
# add the test executable to the dependencies of the check target
|
||||||
if (NOT META_TEST_TARGET_IS_MANUAL)
|
if (NOT META_TEST_TARGET_IS_MANUAL)
|
||||||
add_dependencies(check ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests)
|
add_dependencies(check ${META_TARGET_NAME}_tests)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(META_HAVE_TESTS YES)
|
set(META_HAVE_TESTS YES)
|
||||||
|
|
|
@ -29,7 +29,7 @@ set(@META_PROJECT_VARNAME_UPPER@_HAS_QT_TRANSLATION_FILES @APP_SPECIFIC_QT_TRANS
|
||||||
set(@META_PROJECT_VARNAME_UPPER@_QT_RESOURCES @QT_RESOURCES@)
|
set(@META_PROJECT_VARNAME_UPPER@_QT_RESOURCES @QT_RESOURCES@)
|
||||||
|
|
||||||
# define library config
|
# define library config
|
||||||
set(@META_PROJECT_VARNAME_UPPER@_LIB "@TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@")
|
set(@META_PROJECT_VARNAME_UPPER@_LIB "@META_TARGET_NAME@")
|
||||||
set(@META_PROJECT_VARNAME_UPPER@_LIB_IS_SHARED "@BUILD_SHARED_LIBS@")
|
set(@META_PROJECT_VARNAME_UPPER@_LIB_IS_SHARED "@BUILD_SHARED_LIBS@")
|
||||||
set(PKG_CONFIG_@META_PROJECT_NAME@ "@META_PROJECT_NAME@")
|
set(PKG_CONFIG_@META_PROJECT_NAME@ "@META_PROJECT_NAME@")
|
||||||
if(NOT TARGET "${@META_PROJECT_VARNAME_UPPER@_LIB}")
|
if(NOT TARGET "${@META_PROJECT_VARNAME_UPPER@_LIB}")
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<launchable type="desktop-id">@META_ID@.desktop</launchable>
|
<launchable type="desktop-id">@META_ID@.desktop</launchable>
|
||||||
<developer_name>@META_APP_AUTHOR@</developer_name>
|
<developer_name>@META_APP_AUTHOR@</developer_name>
|
||||||
<provides>
|
<provides>
|
||||||
<binary>@TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@</binary>
|
<binary>@META_TARGET_NAME@/binary>
|
||||||
</provides>
|
</provides>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="@META_APP_VERSION@"/>
|
<release version="@META_APP_VERSION@"/>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
_@TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@()
|
_@META_TARGET_NAME@()
|
||||||
{
|
{
|
||||||
eval "$(@TARGET_EXECUTABLE@ --bash-completion-for "$((COMP_CWORD - 1))" "${COMP_WORDS[@]:1}")"
|
eval "$(@TARGET_EXECUTABLE@ --bash-completion-for "$((COMP_CWORD - 1))" "${COMP_WORDS[@]:1}")"
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
complete -F _@TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@ @TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@
|
complete -F _@META_TARGET_NAME@ @META_TARGET_NAME@
|
||||||
|
|
Loading…
Reference in New Issue