@@ -24,13 +24,13 @@ include(cmake/Conan.cmake)
2424conan()
2525
2626function (init_proj)
27- cmake_parse_arguments (${CMAKE_CURRENT_FUNCTION} "USE_ALT_NAMES" "" "" ${ARGN} )
27+ cmake_parse_arguments (ARG "USE_ALT_NAMES" "" "" ${ARGN} )
2828 message (STATUS "Started CMake for ${PROJECT_NAME} v${PROJECT_VERSION} ...\n " )
2929
3030 #
3131 # Setup alternative names
3232 #
33- if (${${CMAKE_CURRENT_FUNCTION} _USE_ALT_NAMES })
33+ if (${ARG_USE_ALT_NAMES } )
3434 string (TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)
3535 string (TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPERCASE)
3636 endif ()
@@ -43,11 +43,18 @@ function(init_proj)
4343 endif ()
4444endfunction ()
4545
46+ function (target_include_as_system target_name lib_type)
47+ target_include_directories (
48+ ${target_name}
49+ SYSTEM BEFORE ${lib_type} $<TARGET_PROPERTY:INTERFACE_INCLUDE_DIRECTORIES >
50+ )
51+ endfunction ()
52+
4653#
4754# Create header only library
4855#
4956function (config_interface_lib lib_name)
50- cmake_parse_arguments (${CMAKE_CURRENT_FUNCTION} "" "STD" "" ${ARGN} )
57+ cmake_parse_arguments (ARG "" "STD" "" ${ARGN} )
5158
5259 add_library (${lib_name} INTERFACE )
5360
@@ -56,7 +63,7 @@ function(config_interface_lib lib_name)
5663 #
5764 # Set the project standard and warnings
5865 #
59- set (std ${${CMAKE_CURRENT_FUNCTION} _STD })
66+ set (std ${ARG_STD } )
6067 if (${std} )
6168 target_compile_features (${lib_name} INTERFACE cxx_std_${std} )
6269 message (STATUS "Using c++ ${std} .\n " )
@@ -68,16 +75,16 @@ function(config_interface_lib lib_name)
6875 target_include_directories (
6976 ${lib_name}
7077 INTERFACE
71- $<INSTALL_INTERFACE:include >
72- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
78+ $<INSTALL_INTERFACE:include >
79+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
7380 )
7481endfunction ()
7582
7683#
7784# Create static or shared library, setup header and source files
7885#
7986function (config_lib lib_name includes src lib_type)
80- cmake_parse_arguments (${CMAKE_CURRENT_FUNCTION} "" "STD" "" ${ARGN} )
87+ cmake_parse_arguments (ARG "" "STD" "" ${ARGN} )
8188
8289 # Find all headers and implementation files
8390 list (JOIN includes "\n " includes_str)
@@ -99,7 +106,7 @@ function(config_lib lib_name includes src lib_type)
99106 #
100107 # Set the project standard and warnings
101108 #
102- set (std ${${CMAKE_CURRENT_FUNCTION} _STD })
109+ set (std ${ARG_STD } )
103110 if (${std} )
104111 target_compile_features (${lib_name} PUBLIC cxx_std_${std} )
105112 message (STATUS "Using c++ ${std} .\n " )
@@ -111,31 +118,31 @@ function(config_lib lib_name includes src lib_type)
111118 target_include_directories (
112119 ${lib_name}
113120 PUBLIC
114- $<INSTALL_INTERFACE:include >
115- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
121+ $<INSTALL_INTERFACE:include >
122+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
116123 )
117124endfunction ()
118125
119126#
120127# Create executable, setup header and source files
121128#
122129function (config_exe exe_name exe_src)
123- cmake_parse_arguments (${CMAKE_CURRENT_FUNCTION} "" "STD" "INCLUDES;SOURCES" ${ARGN} )
124- set (std ${${CMAKE_CURRENT_FUNCTION} _STD })
130+ cmake_parse_arguments (ARG "" "STD" "INCLUDES;SOURCES" ${ARGN} )
131+ set (std ${ARG_STD } )
125132
126133 list (JOIN exe_src "\n " exe_src_str)
127134 verbose_message("Found the following executable source files:\n ${exe_src_str} " )
128135
129136 add_executable (${exe_name} ${exe_src} )
130137
131- if (${CMAKE_CURRENT_FUNCTION} _INCLUDES )
138+ if (ARG_INCLUDES )
132139 verbose_message("Configuring executable library" )
133140
134- if (${CMAKE_CURRENT_FUNCTION} _SOURCES )
141+ if (ARG_SOURCES )
135142 config_lib(
136143 ${exe_name} _LIB
137- "${${CMAKE_CURRENT_FUNCTION} _INCLUDES }"
138- "${${CMAKE_CURRENT_FUNCTION} _SOURCES }"
144+ "${ARG_INCLUDES } "
145+ "${ARG_SOURCES } "
139146 STATIC
140147 STD ${std}
141148 )
0 commit comments