我的cmake項目應編譯C++ 14代碼。它還使用從其外部庫(這是我的項目中的git子模塊)中包含的CMakeLists.txts。構建在macOS Sierra(cmake 3.6.2)上失敗,因爲the default STL of clang is old and doesn't handle c++11。據我瞭解,有兩個STL隨鐺發貨:libstdC++(來自gcc)(默認)或libC++。所以,如果我的-stdlib=libc++
選項添加到CMake的,源編譯:讓cmake與clang使用C++ 11(C++ 14)
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:-std=c++14>")
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:-stdlib=libc++>")
但隨後在鏈接時失敗,因爲它試圖使用的libstdC++用於鏈接。如何在cmake中指定新的STL libC++應該用於整個構建過程?
PS: clang使用gcc STL的默認原理是什麼?我可以永久指定它應該使用哪個STL嗎?或者我正在做一些完全錯誤的事情(我的一些子項目可以默默地強制gcc?)?
更新:我錯誤的stdlib(和上面的問題)的問題是由我的一個sub-CMakeLists.txt中的一行'set(CMAKE_OSX_DEPLOYMENT_TARGET 10.7)'引起的;見下面的評論! – telephone