我正在使用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,并且出现链接错误。
答案 0 :(得分:0)
您正在寻找的选项的现代cmake用法是add_compile_options()以及target_include_directories,您可以在其中为指定的目标项目指定公共和私有包含。
希望这会有所帮助。