- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C/C++ 项目,我想在其中使用 CppUTest。所以我将 CppUTest 的依赖包括在内:
include(FetchContent)
FetchContent_Declare(
CppUTest
GIT_REPOSITORY https://github.com/cpputest/cpputest.git
GIT_TAG latest-passing-build
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
)
set(TESTS OFF CACHE BOOL "Switch off CppUTest Test build")
FetchContent_MakeAvailable(CppUTest)
这很好用。
在我的(汽车)项目中,我使用 C++20 标准,我需要启用所有/大多数警告。但是当我这样做时,CppUTest 会给我带来很多警告。因此,我想使用与项目代码不同的编译器选项来编译 CppUTest。
如何在 CMake 中配置它?我在谷歌上搜索了很多,但没有找到任何有用的东西。
谢谢,斯特凡
PS:我简化的 CMake 文件是:
cmake_minimum_required(VERSION 3.5)
project(projectName LANGUAGES CXX C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
MESSAGE("Setting Clang flags:")
SET(COMPILE_FLAGS_WARNINGS "-Weverything")
SET(COMPILE_FLAGS_DEBUG "-Og")
SET(COMPILE_FLAGS_RELEASE "-O2")
SET(COMPILE_FLAGS_COVERAGE "--coverage")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
#more options here
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
#more options here
endif()
MESSAGE("Debug: ${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS_WARNINGS} ${COMPILE_FLAGS_DEBUG}")
MESSAGE("Release: ${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS_WARNINGS} ${COMPILE_FLAGS_RELEASE}")
MESSAGE("Coverage: ${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS_WARNINGS} ${COMPILE_FLAGS_DEBUG} ${COMPILE_FLAGS_COVERAGE}")
### Dependencies:
include(FetchContent)
FetchContent_Declare(
CppUTest
GIT_REPOSITORY https://github.com/cpputest/cpputest.git
GIT_TAG latest-passing-build
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
)
set(TESTS OFF CACHE BOOL "Switch off CppUTest Test build")
FetchContent_MakeAvailable(CppUTest)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS_WARNINGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${COMPILE_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "${COMPILE_FLAGS_RELEASE}")
enable_testing()
### add tests
add_subdirectory(path/to/my/tests)
最佳答案
不要使用 set(CMAKE_<LANG>*
.使用 *target*
接口(interface)。如果您不希望使用特定选项编译所有 内容,请不要全局设置它们。相反:
set_target_properties(mytests PROPERTY
CXX_STANDARD 11
etc.
)
target_compile_options(mytests PUBLIC -option1 -option2 ...)
无论如何,SET(CMAKE_<LANG>_*
影响在之后声明的目标。所以搬家set(CMAKE_*
在 FetchContent_MakeAvailable(CppUTest)
之后
关于c++ - 如何将编译选项添加到 CMake FetchContent 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68708076/
使用 FetchContent 下载 git 存储库时,是否有某种方法可以显示下载进度? 我试图清除 FETCHCONTENT_QUIET ,但它什么也没做。我不知道这是否可能。 最佳答案 说明:看g
我正在使用 Cmake 构建一个项目并使用 FetchContent 来管理依赖项。由于多种原因,我不能依赖系统范围内安装的包,所以这个包有很大帮助。它允许我做这样的事情: cmake_minimum
我开始使用 FetchContent 自动下载外部依赖项。与旧方法相比,它工作得很好,但我有一个问题可能与 FetchContent 本身无关 - 外部依赖项被多次下载。我实际上是为 Android
我在内部创建了多个静态库,这些库链接到图像中。 我想使用通过使用 FetchContent_Declare 检索的外部库. proj /lib1 CMakeList.txt /lib2
我正在使用 CMake FetchContent 下载并构建第三方库(在本例中为 realsense2)。在尝试了官方文档 (https://cmake.org/cmake/help/v3.11/mo
我有一个 C/C++ 项目,我想在其中使用 CppUTest。所以我将 CppUTest 的依赖包括在内: include(FetchContent) FetchContent_Declare(
NO_SYSTEM_FROM_IMPORTED告诉我们 IMPORTED 目标自动获取 -isystem。这是否也适用于使用 FetchContent 引入项目的目标? ? 如果不是(我假设是因为在获
全部。 我决定使用新的 cmake 宏来下载外部依赖项。 我从 Catch2 库的文档中获取了示例代码。 include(FetchContent) FetchContent_Declare(
我试图在点击事件后让“保存”按钮提醒,但我没有成功。 Perfil.html Profile.html 不是主页。它是仪表板的一部分。 Informações
我当前的项目需要一个使用 Makefile 构建的库。我想在我的项目编译期间编译这个库;此功能是 FetchContent 的主要卖点,它与 CMake 依赖项配合得很好。然而,我无法让它与 Make
我当前的项目需要一个使用 Makefile 构建的库。我想在我的项目编译期间编译这个库;此功能是 FetchContent 的主要卖点,它与 CMake 依赖项配合得很好。然而,我无法让它与 Make
在 Ubuntu 上执行 cmake 命令时出现以下错误。 CMake 版本 - 3.10.2。 mapp@ubuntu:~/Desktop/LocatePro$ cmake . -- Enabl
我有一个需要使用两个库的小项目,即 ASIO(独立)和 nlohmann/json。 将 json 库添加到我的 CMake 项目非常简单: include(FetchContent) FetchCo
我正在尝试使用 CMAKE 构建 libpng,但它需要 zlib,因此我正在尝试同时构建它们但没有任何运气。我喜欢 FetchContent,因此我可以指定 GIT_TAG 并在将来需要时轻松更新它
我是一名优秀的程序员,十分优秀!