【发布时间】:2017-07-07 18:54:20
【问题描述】:
我需要用/std:c++17 替换INTERFACE 目标(仅标头库)的/std:c++14 标志。 CMake 还不支持直接在 VS 中设置 C++17 标志(请参阅How to enable /std:c++17 in VS2017 with CMake),因此我需要手动替换它。
但是 get_target_property(my_compile_flags mylib COMPILE_OPTIONS) 检索当前设置的标志列表然后随后将 /std:c++14 替换为 /std:c++17 不起作用:
INTERFACE_LIBRARY 目标可能只有列入白名单的属性。不允许使用“COMPILE_OPTIONS”属性。
您可以通过target_compile_features(...) 设置它们,也可以通过例如手动设置它们。 target_compile_options(mylib INTERFACE /std:c++17)。但是后一个命令添加标志,而不删除/std:c++14。
怎么办?
【问题讨论】: