我需要用/std:c++17
替換INTERFACE
目標(僅標頭庫)的/std:c++14
標誌。 CMake不支持直接在VS中設置C++ 17標誌(請參閱How to enable /std:c++17 in VS2017 with CMake),因此我需要手動將其替換。CMake:替換INTERFACE目標的編譯標誌
然而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
。
如何去解決這個問題?
啊哈,爽!謝謝!祝賀10k代表:-) – Ela782
@ Ela782謝謝:-)不用客氣。只是它會很好 - 在回答時幫助我們/我 - 如果您可以在未來的問題中添加[mcve]作爲測試用例。 – Florian