【发布时间】:2015-04-16 22:54:50
【问题描述】:
我有一个只有头文件的 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,因此我的仅标头库的使用者(许多 EXE)将自动从 lib 传播 C++11 配置。
是否有某种方法可以在高级别的 11/14 标准中定义,但也可以为仅标头(接口)库配置它?我不希望回到旧手册 -std=c++11。
【问题讨论】:
-
确实,不支持
INTERFACE_CXX_STANDARD目标属性是经过深思熟虑的设计选择。另请参阅CMAKE_CXX_STANDARD变量。