在现代CMake中设置全局选项?

时间:2019-07-30 12:15:39

标签: c++ cmake compiler-flags

我正在使用cmake来构建我的库,其中包括用于google-test的子目录(子模块)。作为我CI管道的一部分,我正在运行msan(clang内存清理程序),这要求我使用一些特殊选项(-fsanitize=memory -stdlib=libc++ -L/path/to/libc++/lib -I/path/to/libc++/include ...)构建整个项目(包括google test)。

现在,我只是使用CMAKE_CXX_FLAGS和全局include_directories来设置所有lib / include路径。但是,这违反了“现代cmake”准则。这是对全局变量的适当使用,还是有其他方法可以使用目标使其正常工作?我可以在自己的图书馆中使用它,但是它不会传播到google-test,并且出现链接错误。

1 个答案:

答案 0 :(得分:0)

您正在寻找的选项的现代cmake用法是add_compile_options()以及target_include_directories,您可以在其中为指定的目标项目指定公共和私有包含。

希望这会有所帮助。