我正在使用cmake构建我的库,其中包含一个google-test (子模块)的子目录。作为CI流水线的一部分,我正在运行msan (clang memory sanitizer),这需要我使用一些特殊选项(-fsanitize=memory -stdlib=libc++ -L/path/to/libc++/lib -I/path/to/libc++/include ...)构建整个项目(包括谷歌测试)。
现在,我只是使用CMAKE_CXX_FLAGS和一个全局include_directories来设置所有的库/包含路径。然而,这与“现代cmake”准则背道而驰。这是对全局变量的适当使用吗,还是有其他方法可以使用目标使其正常工作?我可以为我的库这样做,但是它不会传播到google-test,我会得到链接错误。
发布于 2019-07-30 20:24:08
您正在寻找的选项的现代cmake用法是add_compile_options()和target_include_directories,您可以在其中为指定的目标项目指定公共和私有包含。
希望这能有所帮助。
https://stackoverflow.com/questions/57271472
复制相似问题