在现代CMAKE中设置全球选项

Setting global options in modern CMake?

本文关键字:选项 设置 CMAKE      更新时间:2023-10-16

我正在使用cmake构建我的库,其中包括用于Google-Test(subpodule(的子目录。作为我的CI管道的一部分,我正在运行MSAN(Clang Memory Sanitizer(,这要求我使用一些特殊选项(-fsanitize=memory -stdlib=libc++ -L/path/to/libc++/lib -I/path/to/libc++/include ...(构建整个项目(包括Google测试(。

现在,我只是使用CMAKE_CXX_FLAGS和全局include_directories来设置所有lib/包括路径。但是,这违反了"现代CMAKE"准则。是适当使用全局变量,还是有其他方法可以使其使用目标正常工作?我可以为我的库做到这一点,但是它不会传播到Google检测,而我会收到链接错误。

您要寻找的选项的现代cmake用法是add_compile_options((以及target_include_directories,您可以在其中为指定的目标项目指定public and private。

希望这会有所帮助。