c++ - 在现代 CMake 中设置全局选项?
问题描述
我正在使用 cmake 构建我的库,其中包括 google-test 的子目录(子模块)。作为 CI 管道的一部分,我正在运行 msan(clang 内存清理程序),这需要我使用一些特殊选项(-fsanitize=memory -stdlib=libc++ -L/path/to/libc++/lib -I/path/to/libc++/include
...)来构建整个项目(包括 google 测试)。
现在,我只是使用CMAKE_CXX_FLAGS
和一个全局include_directories
来设置所有 lib/include 路径。但是,这违反了“现代 cmake”准则。这是对全局变量的适当使用,还是有另一种方法可以使用目标使其正常工作?我可以为我的图书馆做这件事,但它不会传播到 google-test 并且我得到链接错误。
解决方案
您正在寻找的选项的现代 cmake 用法是add_compile_options()以及target_include_directories,您可以在其中为指定的目标项目指定公共和私有包含。
希望这可以帮助。
推荐阅读
- android - 如何设置提醒?
- shopify - 如何使用 Shopify Liquid 扫描订单 - 获取自定义发票
- r - 重新排序数据框中的单个列,而不重新排序整个表
- java - 将多个 TextView 合并到一个位图上 - 我应该使用画布吗?
- salt-stack - SaltStack 渲染 SLS 'base:tomee' 失败:Jinja 变量 'dict object' 没有属性 'app-server'
- nativescript - 我如何在 nativescript angular 中缓存图像
- python - 线程不会同时运行
- php - Goutte,如何发送正文
- git - Git 命令显示两次提交之间更改的文件
- javascript - 如何在javascript中为没有单位的svg设置字体大小