仅在非外部项目的预设中使用 CMake 编译标志
Using CMake compile flags in preset for non-external projects only
我正在向我的应用程序添加一些外部项目。例如,gtest.
在我的 CMake 预设中,我设置了以下...
{
"version": 4,
"cmakeMinimumRequired": {
"major": 3,
"minor": 23,
"patch": 0
},
"configurePresets": [
{
"name": "debug",
"displayName": "debug",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_CXX_FLAGS": "/W4 /Wall /EHsc",
"CMAKE_CXX_STANDARD": "20",
"CMAKE_CXX_STANDARD_REQUIRED": "YES",
"CMAKE_CXX_EXTENSIONS": "OFF"
}
}
]
}
当我使用上述预设进行构建时,我在构建 gtest 时收到了一堆警告。我只想看到来自我的内部构建的警告,而不是外部项目。
在我的根 CMakeLists.txt 我有以下...
cmake_minimum_required(VERSION 3.23.0)
project(ProjectName LANGUAGES C CXX CUDA)
include(CTest)
add_subdirectory(external) # This has a bunch of external dependencies.
add_subdirectory(src) # This builds a normal executable.
add_subdirectory(tests) # This has various unit tests.
有没有办法让我确保这些标志仅用于我的个人项目,而不用于外部?
我查看了“https://cmake.org/cmake/help/v3.23/manual/cmake-presets.7.html”,但没有什么特别的。
谢谢
如果您想本地化您的设置,则不应使用全局变量。使用 target_compile_options
和其他 target_*
命令,而不是在预设中设置 CMAKE_CXX_*
全局(缓存)变量。
或者,您可以选择不将构建外部项目作为本地项目构建的一部分。有了那个组织,您一开始就不会有问题。
我正在向我的应用程序添加一些外部项目。例如,gtest.
在我的 CMake 预设中,我设置了以下...
{
"version": 4,
"cmakeMinimumRequired": {
"major": 3,
"minor": 23,
"patch": 0
},
"configurePresets": [
{
"name": "debug",
"displayName": "debug",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_CXX_FLAGS": "/W4 /Wall /EHsc",
"CMAKE_CXX_STANDARD": "20",
"CMAKE_CXX_STANDARD_REQUIRED": "YES",
"CMAKE_CXX_EXTENSIONS": "OFF"
}
}
]
}
当我使用上述预设进行构建时,我在构建 gtest 时收到了一堆警告。我只想看到来自我的内部构建的警告,而不是外部项目。
在我的根 CMakeLists.txt 我有以下...
cmake_minimum_required(VERSION 3.23.0)
project(ProjectName LANGUAGES C CXX CUDA)
include(CTest)
add_subdirectory(external) # This has a bunch of external dependencies.
add_subdirectory(src) # This builds a normal executable.
add_subdirectory(tests) # This has various unit tests.
有没有办法让我确保这些标志仅用于我的个人项目,而不用于外部?
我查看了“https://cmake.org/cmake/help/v3.23/manual/cmake-presets.7.html”,但没有什么特别的。
谢谢
如果您想本地化您的设置,则不应使用全局变量。使用 target_compile_options
和其他 target_*
命令,而不是在预设中设置 CMAKE_CXX_*
全局(缓存)变量。
或者,您可以选择不将构建外部项目作为本地项目构建的一部分。有了那个组织,您一开始就不会有问题。