Ver código fonte

better cmake scripts. fixed CI scripts.

lganzzzo 5 anos atrás
pai
commit
a353e40cba
7 arquivos alterados com 128 adições e 109 exclusões
  1. 14 2
      CMakeLists.txt
  2. 0 11
      azure-pipelines.yml
  3. 7 8
      lgtm.yml
  4. 1 78
      src/CMakeLists.txt
  5. 9 0
      src/module-config.cmake.in
  6. 97 0
      src/module-install.cmake
  7. 0 10
      src/package.cmake.in

+ 14 - 2
CMakeLists.txt

@@ -3,13 +3,25 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
 file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/src/oatpp/core/base/Environment.hpp" OATPP_VERSION_MACRO REGEX "#define OATPP_VERSION \"[0-9]+.[0-9]+.[0-9]+\"$")
 string(REGEX REPLACE "#define OATPP_VERSION \"([0-9]+.[0-9]+.[0-9]+)\"$" "\\1" oatpp_VERSION "${OATPP_VERSION_MACRO}")
 
-project(oatpp VERSION ${oatpp_VERSION} LANGUAGES CXX)
+###################################################################################################
+## These variables are passed to oatpp-module-install.cmake script
+## use these variables to configure module installation
+
+set(OATPP_THIS_MODULE_NAME oatpp) ## name of the module (also name of folders in installation dirs)
+set(OATPP_THIS_MODULE_VERSION ${oatpp_VERSION}) ## version of the module (also sufix of folders in installation dirs)
+set(OATPP_THIS_MODULE_LIBRARIES oatpp oatpp-test) ## list of libraries to find when find_package is called
+set(OATPP_THIS_MODULE_TARGETS oatpp oatpp-test) ## list of targets to install
+set(OATPP_THIS_MODULE_DIRECTORIES oatpp oatpp-test) ## list of directories to install
+
+###################################################################################################
+
+project(oatpp VERSION ${OATPP_THIS_MODULE_VERSION} LANGUAGES CXX)
 
 option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
 option(OATPP_INSTALL "Create installation target for oat++" ON)
 option(OATPP_BUILD_TESTS "Create test target for oat++" ON)
 
-message("oatpp version: '${oatpp_VERSION}'")
+message("oatpp version: '${OATPP_THIS_MODULE_VERSION}'")
 
 add_subdirectory(src)
 

+ 0 - 11
azure-pipelines.yml

@@ -12,20 +12,15 @@ jobs:
   workspace:
     clean: all
   steps:
-    - script: |
-        mkdir oatpp
-        mv `ls -A | grep -v oatpp` ./oatpp/
     - task: CMake@1
     - script: |
         cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DOATPP_INSTALL=OFF -DOATPP_BUILD_TESTS=ON
         make
       displayName: 'CMake'
-      workingDirectory: oatpp
 
     - script: |
         make test ARGS="-V"
       displayName: 'Test'
-      workingDirectory: oatpp
 
 - job: macOS
   displayName: 'Build - macOS-10.13'
@@ -35,18 +30,12 @@ jobs:
   workspace:
     clean: all
   steps:
-    - script: |
-        mkdir oatpp
-        mv `ls -A | grep -v oatpp` ./oatpp/
     - task: CMake@1
     - script: |
         cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DOATPP_INSTALL=OFF -DOATPP_BUILD_TESTS=ON
         make
       displayName: 'CMake'
-      workingDirectory: oatpp
 
     - script: |
         make test ARGS="-V"
       displayName: 'Test'
-      workingDirectory: oatpp
-

+ 7 - 8
lgtm.yml

@@ -1,18 +1,17 @@
 path_classifiers:
   generated:
-    - exclude: "oatpp/*" # don't tag oatpp sources as generated
+    - exclude: "src/*"  # don't tag oatpp sources as generated
   library:
-    - exclude: "oatpp/*" # don't tag oatpp sources as library
+    - exclude: "src/*"  # don't tag oatpp sources as library
   template:
-    - exclude: "oatpp/*" # don't tag oatpp sources as template
+    - exclude: "src/*"  # don't tag oatpp sources as template
   test: 
-    - exclude: "oatpp/*" # don't tag oatpp sources as test
-    - oatpp/test         # tag test folder only as test
+    - exclude: "src/*"  # don't tag oatpp sources as test
+    - test              # tag test folder only as test
   docs:
     - README.md
     - LICENSE.txt
 extraction:
   cpp:
-    after_prepare:    
-      - mkdir oatpp # oatpp must be stored in the "oatpp" dir name.
-      - mv `ls -A | grep -v oatpp` ./oatpp/
+    after_prepare:
+

+ 1 - 78
src/CMakeLists.txt

@@ -184,7 +184,6 @@ set_target_properties(oatpp PROPERTIES
         CXX_STANDARD 11
         CXX_EXTENSIONS OFF
         CXX_STANDARD_REQUIRED ON
-        VERSION ${oatpp_VERSION}
 )
 
 set(CMAKE_THREAD_PREFER_PTHREAD ON)
@@ -195,7 +194,6 @@ target_link_libraries(oatpp PUBLIC ${CMAKE_THREAD_LIBS_INIT})
 
 target_include_directories(oatpp PUBLIC
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
-    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
 )
 
 #######################################################################################################
@@ -211,14 +209,12 @@ set_target_properties(oatpp-test PROPERTIES
         CXX_STANDARD 11
         CXX_EXTENSIONS OFF
         CXX_STANDARD_REQUIRED ON
-        VERSION ${oatpp_VERSION}
 )
 
 target_link_libraries(oatpp-test PUBLIC oatpp)
 
 target_include_directories(oatpp-test PUBLIC
         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
-        $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
 )
 
 add_dependencies(oatpp-test oatpp)
@@ -227,78 +223,5 @@ add_dependencies(oatpp-test oatpp)
 ## INSTALL TARGETS
 
 if(OATPP_INSTALL)
-
-    #######################################################################################
-    ## Set module properties
-    ## all oatpp modules should have the same installation procedure
-    ##
-    ## installation tree:
-    ##
-    ## prefix/
-    ##  |
-    ##  |- include/<module-name>-<version>/<module-name>
-    ##   - lib/
-    ##       |
-    ##       |- cmake/<module-name>-<version>/
-    ##       |    |
-    ##       |    |- <module-name>Config.cmake
-    ##       |     - <module-name>ConfigVersion.cmake
-    ##       |
-    ##       |- <module-name>-<version>/
-    ##            |
-    ##            |- lib1.a
-    ##            |- lib2.a
-    ##             - ...
-    ##
-    ######################################################################################
-
-    set(OATPP_MODULE_NAME "oatpp" CACHE STRING "oatpp module name")
-    set(OATPP_MODULE_VERSION "${oatpp_VERSION}" CACHE STRING "oatpp module version")
-    set(OATPP_MODULE_LIBRARIES
-            "oatpp;oatpp-test" ## list libraries to find when find_package is called
-            CACHE INTERNAL "oatpp module libraries"
-    )
-
-    #######################################################################################
-
-    include(GNUInstallDirs)
-
-    install(TARGETS oatpp oatpp-test
-            EXPORT "${OATPP_MODULE_NAME}Targets"
-            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}
-            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}
-            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}
-    )
-
-    install(DIRECTORY oatpp oatpp-test
-            DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}
-            FILES_MATCHING PATTERN "*.hpp"
-    )
-
-    install(EXPORT "${OATPP_MODULE_NAME}Targets"
-            FILE "${OATPP_MODULE_NAME}Targets.cmake"
-            NAMESPACE oatpp::
-            DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/oatpp-${OATPP_MODULE_VERSION}
-    )
-
-    include(CMakePackageConfigHelpers)
-
-    write_basic_package_version_file("${OATPP_MODULE_NAME}ConfigVersion.cmake"
-            VERSION ${OATPP_MODULE_VERSION}
-            COMPATIBILITY ExactVersion ## Use exact version matching.
-    )
-
-    ## Take package.cmake.in file in this direcory as a template
-
-    configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/package.cmake.in
-            "${OATPP_MODULE_NAME}Config.cmake"
-            INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/oatpp-${OATPP_MODULE_VERSION}"
-            PATH_VARS OATPP_MODULE_NAME OATPP_MODULE_VERSION OATPP_MODULE_LIBRARIES
-            NO_CHECK_REQUIRED_COMPONENTS_MACRO
-    )
-
-    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake"
-            DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/oatpp-${OATPP_MODULE_VERSION}"
-    )
-
+    include("module-install.cmake")
 endif()

+ 9 - 0
src/module-config.cmake.in

@@ -0,0 +1,9 @@
+@PACKAGE_INIT@
+
+if(NOT TARGET oatpp::oatpp)
+    include("${CMAKE_CURRENT_LIST_DIR}/@OATPP_MODULE_NAME@Targets.cmake")
+endif()
+
+set_and_check(@OATPP_MODULE_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/oatpp-@OATPP_MODULE_VERSION@/@OATPP_MODULE_NAME@/")
+set_and_check(@OATPP_MODULE_NAME@_LIBRARIES_DIRS "${PACKAGE_PREFIX_DIR}/lib/@OATPP_MODULE_NAME@-@OATPP_MODULE_VERSION@/")
+set(@OATPP_MODULE_NAME@_LIBRARIES @OATPP_MODULE_LIBRARIES@)

+ 97 - 0
src/module-install.cmake

@@ -0,0 +1,97 @@
+#######################################################################################
+## Set module properties
+## all oatpp modules should have the same installation procedure
+##
+## installation tree:
+##
+## prefix/
+##  |
+##  |- include/oatpp-<version>/<module-name>
+##   - lib/
+##       |
+##       |- cmake/<module-name>-<version>/
+##       |    |
+##       |    |- <module-name>Config.cmake
+##       |     - <module-name>ConfigVersion.cmake
+##       |
+##        - oatpp-<version>/
+##            |
+##            |- lib1.a
+##            |- lib2.a
+##             - ...
+##
+######################################################################################
+
+message("\n############################################################################")
+message("## oatpp-module-install.cmake\n")
+
+message("OATPP_THIS_MODULE_NAME=${OATPP_THIS_MODULE_NAME}")
+message("OATPP_THIS_MODULE_VERSION=${OATPP_THIS_MODULE_VERSION}")
+message("OATPP_THIS_MODULE_LIBRARIES=${OATPP_THIS_MODULE_LIBRARIES}")
+message("OATPP_THIS_MODULE_TARGETS=${OATPP_THIS_MODULE_TARGETS}")
+message("OATPP_THIS_MODULE_DIRECTORIES=${OATPP_THIS_MODULE_DIRECTORIES}")
+
+message("\n############################################################################\n")
+
+#######################################################################################
+## Set cache variables to configure module-config.cmake.in template
+## via call to configure_package_config_file
+
+set(OATPP_MODULE_NAME ${OATPP_THIS_MODULE_NAME} CACHE STRING "oatpp module name")
+set(OATPP_MODULE_VERSION "${OATPP_THIS_MODULE_VERSION}" CACHE STRING "oatpp module version")
+set(OATPP_MODULE_LIBRARIES
+        "${OATPP_THIS_MODULE_LIBRARIES}" ## list libraries to find when find_package is called
+        CACHE INTERNAL "oatpp module libraries"
+)
+
+#######################################################################################
+
+include(GNUInstallDirs)
+
+install(TARGETS ${OATPP_THIS_MODULE_TARGETS}
+        EXPORT "${OATPP_MODULE_NAME}Targets"
+        ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
+        LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
+        RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}"
+        INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
+)
+
+install(DIRECTORY ${OATPP_THIS_MODULE_DIRECTORIES}
+        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
+        FILES_MATCHING PATTERN "*.hpp"
+)
+
+install(EXPORT "${OATPP_MODULE_NAME}Targets"
+        FILE "${OATPP_MODULE_NAME}Targets.cmake"
+        NAMESPACE oatpp::
+        DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
+)
+
+include(CMakePackageConfigHelpers)
+
+write_basic_package_version_file("${OATPP_MODULE_NAME}ConfigVersion.cmake"
+        VERSION ${OATPP_MODULE_VERSION}
+        COMPATIBILITY ExactVersion ## Use exact version matching.
+)
+
+## Take module-config.cmake.in file in this direcory as a template
+
+configure_package_config_file(
+            "${CMAKE_CURRENT_SOURCE_DIR}/module-config.cmake.in"
+            "${OATPP_MODULE_NAME}Config.cmake"
+        INSTALL_DESTINATION
+            "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
+        PATH_VARS
+            OATPP_MODULE_NAME
+            OATPP_MODULE_VERSION
+            OATPP_MODULE_LIBRARIES
+        NO_CHECK_REQUIRED_COMPONENTS_MACRO
+)
+
+install(
+        FILES
+            "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake"
+            "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake"
+        DESTINATION
+            "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
+)

+ 0 - 10
src/package.cmake.in

@@ -1,10 +0,0 @@
-@PACKAGE_INIT@
-
-set_and_check(@OATPP_MODULE_NAME@_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/include/@OATPP_MODULE_NAME@-@OATPP_MODULE_VERSION@/@OATPP_MODULE_NAME@/")
-set_and_check(@OATPP_MODULE_NAME@_LIBRARIES_DIR "${PACKAGE_PREFIX_DIR}/lib/@OATPP_MODULE_NAME@-@OATPP_MODULE_VERSION@/")
-
-foreach(CURR_LIB @OATPP_MODULE_LIBRARIES@)
-    unset(@OATPP_MODULE_NAME@_FOUND_LIB_${CURR_LIB} CACHE)
-    find_library(@OATPP_MODULE_NAME@_FOUND_LIB_${CURR_LIB} ${CURR_LIB} PATHS ${@OATPP_MODULE_NAME@_LIBRARIES_DIR})
-    list(APPEND @OATPP_MODULE_NAME@_LIBRARIES ${@OATPP_MODULE_NAME@_FOUND_LIB_${CURR_LIB}})
-endforeach()