我需要将目标(仅标头库)/std:c++14的标志替换为. CMake 还不支持直接在 VS 中设置 C++17 标志(请参阅如何使用 CMake 在 VS2017 中启用 /std:c++17),因此我需要手动替换它。INTERFACE/std:c++17
但是,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.
该怎么做呢?