diff options
author | hdf89shfdfs <31327577+hdf89shfdfs@users.noreply.github.com> | 2021-01-08 12:56:04 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-08 09:56:04 -0800 |
commit | d0052f6320553769110a1d6b260b74afb82ffb92 (patch) | |
tree | fea3ac7f244d9320ffd29c0976841f43ce468a6b | |
parent | 3b3478eaf8da7b83128fef0cf2cbd7b6804abe4b (diff) | |
download | Microsoft-GSL-d0052f6320553769110a1d6b260b74afb82ffb92.tar.gz |
Minor cmake nitpicks (#969)
It's much nicer and less error prone to just use add_subdirectory to establish the include directory.
Hide the GNUInstallDirs module by placing it in the helper module. The intent being that the main CMakeLists.txt should have a little code as possible. So that readers can quickly understand the project.
Use include_guard() when available in cmake 3.10+
Co-authored-by: Juan Ramos <juanr0911@gmail.com>
-rw-r--r-- | CMakeLists.txt | 7 | ||||
-rw-r--r-- | cmake/guidelineSupportLibrary.cmake | 29 | ||||
-rw-r--r-- | include/CMakeLists.txt | 20 |
3 files changed, 32 insertions, 24 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index a14d173..64ae165 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,9 +8,6 @@ project(GSL LANGUAGES CXX ) -# Use GNUInstallDirs to provide the right locations on all platforms -include(GNUInstallDirs) - # Creates a library GSL which is an interface (header files only) add_library(GSL INTERFACE) @@ -41,8 +38,8 @@ else() gsl_client_set_cxx_standard(${gsl_min_cxx_standard}) endif() -# Setup the include directory -gsl_target_include_directories(${GSL_STANDALONE_PROJECT}) +# Setup include directory +add_subdirectory(include) # Add natvis file gsl_add_native_visualizer_support() diff --git a/cmake/guidelineSupportLibrary.cmake b/cmake/guidelineSupportLibrary.cmake index bf24a79..341ba66 100644 --- a/cmake/guidelineSupportLibrary.cmake +++ b/cmake/guidelineSupportLibrary.cmake @@ -4,14 +4,21 @@ # for multiple versions of cmake. # # Any functions/macros should have a gsl_* prefix to avoid problems -if (DEFINED guideline_support_library_include_guard) - return() +if (CMAKE_VERSION VERSION_GREATER 3.10 OR CMAKE_VERSION VERSION_EQUAL 3.10) + include_guard() +else() + if (DEFINED guideline_support_library_include_guard) + return() + endif() + set(guideline_support_library_include_guard ON) endif() -set(guideline_support_library_include_guard ON) # Necessary for 'write_basic_package_version_file' include(CMakePackageConfigHelpers) +# Use GNUInstallDirs to provide the right locations on all platforms +include(GNUInstallDirs) + function(gsl_set_default_cxx_standard min_cxx_standard) set(GSL_CXX_STANDARD "${min_cxx_standard}" CACHE STRING "Use c++ standard") @@ -79,22 +86,6 @@ function(gsl_add_native_visualizer_support) endif() endfunction() -function(gsl_target_include_directories is_standalone) - # Add include folders to the library and targets that consume it - # the SYSTEM keyword suppresses warnings for users of the library - if(${is_standalone}) - target_include_directories(GSL INTERFACE - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> - $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> - ) - else() - target_include_directories(GSL SYSTEM INTERFACE - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> - $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> - ) - endif() -endfunction() - function(gsl_install_logic) install(TARGETS GSL EXPORT Microsoft.GSLConfig) install( diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100644 index 0000000..ab90344 --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1,20 @@ + +# Add include folders to the library and targets that consume it +# the SYSTEM keyword suppresses warnings for users of the library +# +# By adding this directory as an include directory the user gets a +# namespace effect. +# +# IE: +# #include <gsl/gsl> +if(GSL_STANDALONE_PROJECT) + target_include_directories(GSL INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> + ) +else() + target_include_directories(GSL SYSTEM INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> + ) +endif() |