生成項目時強調,我知道你可以啓用正確的語法與這裏的黑客所描述的GXX_EXPERIMENTAL強調: Eclipse CDT indexer does not know C++11 containersEclipse的索引適當的C++語法11與cmake的
但我認爲,通過CMake生成項目時,一個應該根本不需要觸摸項目設置。
所以。有一個更簡單的解決方案嗎?
生成項目時強調,我知道你可以啓用正確的語法與這裏的黑客所描述的GXX_EXPERIMENTAL強調: Eclipse CDT indexer does not know C++11 containersEclipse的索引適當的C++語法11與cmake的
但我認爲,通過CMake生成項目時,一個應該根本不需要觸摸項目設置。
所以。有一個更簡單的解決方案嗎?
答案很簡單。
eclipse cdt生成器會在解析符號時忽略用add_definitions(...)添加的定義。相反,它使用CMAKE_CXX_COMPILER_ARG1。 因此,所有你需要做的就是:從cmake的GUI
cmake ../../src -G"Eclipse CDT4 - MinGW Makefiles" -DCMAKE_ECLIPSE_VERSION=4.2 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_ARG1=-std=c++11
發電項目:
- Select source and build directory.
- now BEFORE hitting configure or generate. Press "Add Entry" and add a new entry. Name:CMAKE_CXX_COMPILER_ARG1 Type:STRING Value:-std=c++11
- press Generate and create the Eclipse project
調用cmake的
從命令行生成項目文件時添加-DCMAKE_CXX_COMPILER_ARG1 = -std = C++ 11
在打開配置或第一次生成之前,先設置CMAKE_CXX_COMPILER_ARG1!
就是這樣。該項目將生成正確的符號。索引器,語法高亮和自動完成應該按預期工作,而無需手動更改任何項目設置。
在cmake的3.1版本中引入了一個新的變量CMAKE_CXX_STANDARD,它可以激活C++ 11的支持。嘗試這樣的:
cmake ../../src -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_CXX_STANDARD=11
這似乎進行到生成的Eclipse項目。我試用了verison 3.2.0-rc2,並且Eclipse識別了像std :: shared_ptr <>這樣的C++ 11功能。
一些文檔鏈接:
不,我試着用CMake 3.2.1設置CMAKE_CXX_STANDARD = 14。 GCC將標準設置爲gnu ++ 14,而Eclipse不會。 –
嘗試'cmake -G「Eclipse CDT4 - Unix Makefiles」-DCMAKE_CXX_FLAGS =「 - std = C++ 14」。「 – Tik0
如前所述,項目生成的調用解析之前運行的CMakeLists.txt
。 因此,CMakeLists.txt
中的任何定義對生成的項目文件沒有任何影響。
在eclipse-project生成的情況下,編譯器的功能請求在CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake之內。 在行23變量CMAKE_CXX_FLAGS
被分析,其在行30評估。 特別是這個CMAKE_CXX_FLAGS
變量只能在從命令行調用cmake
時設置。
Recommodation適當的cmake invokation的:cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_CXX_FLAGS="-std=c++11"
(或者具有例如替換c++11
。c++14
或者您喜歡的任何其他標準)
提示:touch /tmp/dummy; /usr/bin/c++ -v -E -x c++ -std=c++11 -dD /tmp/dummy
: 從評估線30結果可從作爲一個例子運行下面的命令可以看出。它輸出編譯器中所有的解析到eclipse-project中的定義:
...
#define __STDC__ 1
#define __cplusplus 201103L
...
這對我來說,使用Eclipse 4.5,cmake 3.7.2和TDM-GCC 5.1。 – gurka
它沒有爲我工作。我正在使用cmake 3.5.1和eclipse Kepler.I仍然必須做這裏第二點要做的事情(https://stackoverflow.com/a/14381512/1971003) - 我在這裏錯過的任何東西?謝謝 !! –