我有一个只有头文件的 C++11 库,所以我想配置它,使用 CMake > 3.1,编译功能似乎是合理的做法:
target_compile_features(my_header_lib INTERFACE cxx_range_for)
但我宁愿不必指明单个特性,而只需指明 C++11 或 C++14。然后我可以尝试使用以下内容:
set_property(TARGET my_target PROPERTY CXX_STANDARD 11)
问题是 my_target 在这里不能是 INTERFACE,它不受支持,并且我不能将它定义为 PUBLIC,因此我的仅 header 库的使用者(许多 EXE)将自动从该库传播 C++11 配置。
是否有某种方法可以在高级别的 11/14 标准上定义,但也可以为仅 header (接口(interface))库配置它?我不希望回到旧手册 -std=c++11。
最佳答案
CMake 3.8 (2017 年 4 月发布)引入了元功能(例如 cxx_std_11、cxx_std_14、cxx_std_17)。例如,您现在可以编写:
target_compile_features(my_header_lib INTERFACE cxx_std_11)
关于c++ - 如何在 Cmake 中定义传递 CXX_STANDARD C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687331/