This is an automated email from the ASF dual-hosted git repository. abroekhuis pushed a commit to branch feature/support_multiple_build_types in repository https://gitbox.apache.org/repos/asf/celix.git
commit b83b72ffdb3b0bbd47b6d38e662cb2cf73b09a27 Author: Alexander Broekhuis <[email protected]> AuthorDate: Mon Apr 20 10:30:03 2020 +0200 Updated cmake files to be able to build and install multiple build types (Debug, Release, etc). For Debug, libs are postfixed with "d", and bundles and the CelixTargets file with "Debug". --- CMakeLists.txt | 7 +++++-- cmake/cmake_celix/BundlePackaging.cmake | 23 +++++++++++++++-------- documents/cmake_commands/README.md | 4 ++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 665eb92..953522f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,8 @@ IF (ANDROID) ELSE () set(CMAKE_C_FLAGS "-D_GNU_SOURCE -std=gnu99 -fPIC ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-std=c++11 -fno-rtti ${CMAKE_CXX_FLAGS}") - set(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}") + set(CMAKE_C_FLAGS "-Wall -Werror -Wno-nullability-completeness -Wno-expansion-to-defined ${CMAKE_C_FLAGS}") +# set(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-Wall -Wextra -Weffc++ ${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS_DEBUG "-g -DDEBUG ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG ${CMAKE_CXX_FLAGS}") @@ -93,6 +94,8 @@ set(CELIX_MICRO "0") # Default bundle version set(DEFAULT_VERSION 1.0.0) +set(CMAKE_DEBUG_POSTFIX "d") + # Options option(ENABLE_TESTING "Enables unit/bundle testing" FALSE) if (ENABLE_TESTING) @@ -137,7 +140,7 @@ add_subdirectory(examples/celix-examples examples) #export targets install(EXPORT celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE Targets.cmake COMPONENT cmake) -install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE CelixTargets.cmake COMPONENT cmake) +install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE CelixTargets COMPONENT cmake) #install celix cmake modules install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/ DESTINATION share/celix/cmake/Modules) diff --git a/cmake/cmake_celix/BundlePackaging.cmake b/cmake/cmake_celix/BundlePackaging.cmake index a1b2c5b..2f22b5b 100644 --- a/cmake/cmake_celix/BundlePackaging.cmake +++ b/cmake/cmake_celix/BundlePackaging.cmake @@ -189,7 +189,10 @@ function(add_celix_bundle) if (NOT DEFINED BUNDLE_SYMBOLIC_NAME) set(BUNDLE_SYMBOLIC_NAME ${BUNDLE_TARGET_NAME}) endif () - if (NOT DEFINED BUNDLE_FILENAME) + + if (NOT DEFINED BUNDLE_FILENAME AND NOT CMAKE_BUILD_TYPE STREQUAL "Release") + set(BUNDLE_FILENAME ${BUNDLE_TARGET_NAME}-${CMAKE_BUILD_TYPE}.zip) + elseif(NOT DEFINED BUNDLE_FILENAME) set(BUNDLE_FILENAME ${BUNDLE_TARGET_NAME}.zip) endif () @@ -762,7 +765,7 @@ function(install_celix_bundle) if (INSTALL_EXPORT) get_target_property(CURRENT_EXPORT_BUNDLES celix-bundles EXPORT_${INSTALL_EXPORT}_BUNDLES) - if (NOT CURRENT_EXPORT_BUNDLES) + if (NOT CURRENT_EXPORT_BUNDLES) set(CURRENT_EXPORT_BUNDLES ${BUNDLE}) else () list(APPEND CURRENT_EXPORT_BUNDLES ${BUNDLE}) @@ -791,7 +794,7 @@ install using the provided <export_name>. These imported CMake targets can be us bundles. Optional Arguments: -- FILE: The Celix Targets cmake filename to used. Default is <export_name>BundleTargets.cmake +- FILE: The Celix Targets cmake filename to used, without the cmake extension. Default is <export_name>BundleTargets - PROJECT_NAME: The project name to used for the share location. Default is the cmake project name. - DESTINATION: The (relative) location to install the Celix Targets cmake file to. Default is share/<PROJECT_NAME>/cmake. @@ -803,7 +806,7 @@ install_celix_targets(<export_name> ) Example: -install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE CelixTargets.cmake) +install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE CelixTargets) ]] function(install_celix_bundle_targets) @@ -825,10 +828,14 @@ function(install_celix_bundle_targets) message(FATAL_ERROR "Please provide a namespace used for the generated cmake targets.") endif () - if (NOT DEFINED EXPORT_FILE) - set(EXPORT_FILE ${EXPORT_NAME}BundleTargets.cmake) + set(EXPORT_FILE ${EXPORT_NAME}BundleTargets) endif () + +# if (NOT CMAKE_BUILD_TYPE STREQUAL "Release") + set(EXPORT_FILE ${EXPORT_FILE}-${CMAKE_BUILD_TYPE}) +# endif () + if (NOT DEFINED EXPORT_PROJECT_NAME) string(TOLOWER ${PROJECT_NAME} EXPORT_PROJECT_NAME) endif() @@ -875,8 +882,8 @@ endif () file(GENERATE OUTPUT "${CONF_FILE}" INPUT "${CONF_IN_FILE}") if (EXPORT_COMPONENT) - install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME ${EXPORT_FILE} COMPONENT ${EXPORT_COMPONENT}) + install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME ${EXPORT_FILE}.cmake COMPONENT ${EXPORT_COMPONENT}) else () - install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME ${EXPORT_FILE}) + install(FILES "${CONF_FILE}" DESTINATION ${EXPORT_DESTINATION} RENAME ${EXPORT_FILE}.cmake) endif () endfunction() diff --git a/documents/cmake_commands/README.md b/documents/cmake_commands/README.md index e0ac129..3026a3f 100644 --- a/documents/cmake_commands/README.md +++ b/documents/cmake_commands/README.md @@ -189,7 +189,7 @@ install using the provided <export_name>. These imported CMake targets can be us bundles. Optional Arguments: -- FILE: The Celix Targets cmake filename to used. Default is <export_name>BundleTargets.cmake +- FILE: The Celix Targets cmake filename to used, without the cmake extension. Default is <export_name>BundleTargets. - PROJECT_NAME: The project name to used for the share location. Default is the cmake project name. - DESTINATION: The (relative) location to install the Celix Targets cmake file to. Default is share/<PROJECT_NAME>/cmake. @@ -204,7 +204,7 @@ install_celix_targets(<export_name> Example: ```CMake -install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE CelixTargets.cmake) +install_celix_targets(celix NAMESPACE Celix:: DESTINATION share/celix/cmake FILE CelixTargets) ```
