aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhdf89shfdfs <31327577+hdf89shfdfs@users.noreply.github.com>2021-01-08 12:56:04 -0500
committerGitHub <noreply@github.com>2021-01-08 09:56:04 -0800
commitd0052f6320553769110a1d6b260b74afb82ffb92 (patch)
treefea3ac7f244d9320ffd29c0976841f43ce468a6b
parent3b3478eaf8da7b83128fef0cf2cbd7b6804abe4b (diff)
downloadMicrosoft-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.txt7
-rw-r--r--cmake/guidelineSupportLibrary.cmake29
-rw-r--r--include/CMakeLists.txt20
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()