2017-02-27 130 views
2

我目前使用CodeLite作爲我的IDE for C++。 IDE中有許多功能,我喜歡使用,界面非常簡單。CodeLite未使用全局編譯設置或項目編譯設置

最近,我將我的代碼從wxWigets從3.0移動到3.1。有許多函數是3.1所獨有的,我發現它對於開發我的C++應用程序非常有幫助。最值得注意的是,wxWindow :: FromDIP函數。

我能夠從在線獲取wxWidgets源代碼併成功編譯它。我右鍵單擊項目文件夾,進入C++編譯器設置,並確保包含我編譯的wx-3.1庫(它是/usr/local/include/wx-3.1)的位置。

作爲測試,我在代碼的某些部分添加了FromDIP()函數。代碼完成能夠提取我輸入的內容,並能夠「查看」FromDIP()函數。

當我去建立項目時,構建失敗了,我有了FromDIP函數的所有點。 IT在說這是不可識別的。

然後我去了全局編譯器設置(設置 - >構建設置 - >(選擇我的編譯器) - >高級),並添加到我的wx-3.1編譯庫的include路徑中。

再次,構建失敗。然後,我回到項目C++編譯器設置並設置全局設置以覆蓋項目設置。

再次,構建失敗。

我看了什麼GCC是輸出:

/usr/bin/g++-4.9 -c "/home/phillip/GitHub/Omni-FEM/src/UI/BoundaryDialog/BoundaryDialog.cpp" -g -O0 -fopenmp -std=c++11 -Wall -lglut -lGL -lGLU -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -o ./Debug/src_UI_BoundaryDialog_BoundaryDialog.cpp.o -I/home/phillip/GitHub/Omni-FEM/Include -I/usr/local/include/wx-3.1 -I/usr/include/wx-3.0-unofficial -I/usr/include/GL -I/usr/local/include/wx-3.1 

有一個流氓-I在/ usr/inlcude/WX-3.0編譯器設置。我相信這個編譯器設置覆蓋了我想要使用wx-3.1的那個(你會在後面看到這個選項)。當然,構建將失敗,因爲如果CodeLite嘗試使用3.0進行編譯,則該函數不存在。我一直在瀏覽所有的菜單,找到這個設置的位置,我還沒有找到任何東西。

我的問題是,有沒有其他地方,我需要改變編譯器設置,如果是的話,我在哪裏可以找到它?或者,我需要做其他事嗎?喜歡在某處覆蓋某些設置?

回答

2

默認情況下,CodeLite使用wx-config工具來獲取編譯器所需的正確路徑和定義。

您需要做的就是確保使用正確的wx-config工具。 要做到這一點,只需從終端wx-config --cflags鍵入並查看哪些標誌正在打印到終端。

你不(也不應該)手動添加編譯器的路徑,只是在: Project Settings->Compiler->Compiler options請確保您有$(shell wx-config --cxxflags)Project settings->Linker->Linker options確保你有$(shell wx-config --libs)

關於全球道路:你不應該添加除非你真的知道你在做什麼。這些路徑用於所有工作空間,即使那些與wxWidgets無關的工作空間也是如此。所有項目設置應該設置在工作區級別(這種方式如果你與其他人分享你的項目,他們也可以從你的設置中受益)

如果你有多個wxWidgets安裝,你需要確保正確使用wx-config。要做到這一點,你可以做下列條件之一:

  • 假設你想/usr/loca/bin/wx-config使用,通過在Project Settings->Compiler->Compiler Options加入這一行PATH=/usr/local/bin:$PATH
  • 使用完整路徑wx-config所以從Settings->Environment variables更新CodeLite的PATH環境變量使用此選項$(shell /usr/local/bin/wx-config --cxxflags)(在Project settings->Linker->Linker Options中做相同處理)
+0

謝謝您的回覆。這裏是wx-config --cflags的輸出:-I/usr/local/lib/wx/include/gtk2-unicode-3.1 -I/usr/local/include/wx-3.1 -D_FILE_OFFSET_BITS = 64 -DWXUSINGDLL -D__WXGTK__ -pthread。不幸的是,當我恢復到原始設置後,我仍然收到錯誤,刪除了我的包含路徑中的條目,並確保$(shell wx-config)位於C++編譯器選項中。我仍然得到:-g -O0 -fopenmp -std = C++ 11 -Wall -lglut -lGL -lGLU -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I /usr/include/wx-3.0 -D_FILE_OFFSET_BITS = 64 -DWXUSINGDLL -D__WXGTK__ – philm

+0

確保使用了正確的'wx-config'。當你鍵入以下命令時會得到什麼:'which wx-config'? – Eran

+0

,你在'/ usr/local/bin'中有2個'wx-config',在'/ usr/bin'中有一個' – Eran