我有一个来自惊人教程的简单项目结构
https://rix0r.nl/blog/2015/08/13/cmake-guide/
它看起来如下:
- src
- CMakeLists.txt
- mylib
- include/mylib/mylibclass.h
- src/mylibclass.cpp
- CMakeLists.txt
- myapp
- src/myapp.cpp
- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
顶级 CMakeLists.txt 包含:
cmake_minimum_required( VERSION 3.6 )
project( sample_project VERSION 0.1 LANGUAGES CXX )
set( BUILD_SHARED_LIBS ON CACHE BOOL "" )
add_subdirectory( mylib )
add_subdirectory( myapp )
Run Code Online (Sandbox Code Playgroud)
mylib 文件夹中的 CMakeLists.txt 包含:
add_library( mylib src/mylibclass.cpp include/mylib/mylibclass.h )
set_target_properties( mylib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
target_include_directories( mylib
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PRIVATE src )
Run Code Online (Sandbox Code Playgroud)
而 myapp 文件夹中的一个包含:
add_executable( myapp src/myapp.cpp )
target_link_libraries( myapp mylib …Run Code Online (Sandbox Code Playgroud) 我经常遇到这样的用例,我必须检查一组键是否包含在一组嵌套映射中。我目前有一些实用嵌套深度的实现,如下所示:
template< typename Key1T, typename Key2T, typename ValueT >
bool contains
( std::map< Key1T, std::map< Key2T, ValueT > > const & m
, Key1T const & k1
, Key2T const & k2
)
{
return m.contains( k1 ) && m.at( k1 ).contains( k2 );
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以将其实现为所有可能的嵌套深度的单个函数,也许可以促进可变参数模板?