2011-07-25 78 views
4

我工作的一個C++項目與它由一個圖書館項目的Linux的Eclipse CDT的:重建依賴項目

運行Eclipse靛藍+ CDT,並與單元測試該庫的項目。
很明顯,第二個項目取決於第一個項目。
這兩個項目都使用外部構建器

但是,當我修改第一個項目的標題時,它不重建測試項目。我無法做到這一點......即使標題包含在測試項目中,它也會重新鏈接第二個項目。這非常令人討厭,因爲我經常在圖書館工作的時候開始工作,然後在某個時候我做了一次完整的重建,而且我看到了一大堆錯誤,就我30分鐘前做的事情而言!

例如CDT全球建立控制檯輸出:

**** Build of configuration Debug for project libxxx **** 

make -j all 
Building file: ../foo.cpp 
Invoking: GCC C++ Compiler 
ccache g++ -I"/home/foke/workspaces/cpp/libxxx/include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"foo.d" -MT"foo.d" -o "foo.o" "../foo.cpp" 
Finished building: ../foo.cpp 

Building target: libxxx.a 
Invoking: GCC Archiver 
ar -r "libxxx.a" ./foo.o ./src/yyy.o ./src/detail/zzz.o 
ar: creating libxxx.a 
Finished building target: libxxx.a 


**** Build Finished **** 

**** Build of configuration Debug for project libxxx_tests **** 

make -k -j all 
Building target: libxxx_tests 
Invoking: Cross G++ Linker 
g++ -L"/home/foke/workspaces/cpp/libxxx/Debug" -o "libxxx_tests" ./main.o ./aaa.o ./tests/bbb.o ./tests/ccc.o ./tests/ddd.o -lboost_unit_test_framework -lxxx 
Finished building target: libxxx_tests 


**** Build Finished **** 

回答

4

如果你已經習慣了微軟的Visual Studio的最新版本,那麼你應該清除掉的空間你的辦公桌上,並與一個巨大的'標記它X' - 這不可避免地會讓你的拳頭甚至頭部在使用eclipse/CDT時感到沮喪。 Eclipse有它自己的依賴機制,它幾乎不做任何事情,但幸運的是,CDT模塊有它自己的依賴機制,它試圖做你想做的事情。要設置項目的依賴關係,請訪問:

Project-->Properties-->C/C++ General-->Paths and Symbols-->References 

因此,在你的榜樣,你會去到項目屬性「libxxx_tests」,然後選擇「libxxx.a」作爲一個依賴。

請注意,您也可以使用此頁面來設置庫順序,這可能是取決於項目複雜性的重要步驟。

+1

嗨,這是行不通的。很久以前,我對這個問題感到沮喪。我在這裏問它:http://stackoverflow.com/questions/9884827/eclipse-cdt-not-building-project-on-header-file-change並在這裏發佈這個eclipse的bug:https://bugs.eclipse.org /bugs/show_bug.cgi?id=375800 – haelix

+0

適用於Code Composer Studio 5.5.0,據我所知它基於Eclipse 3.8.1和CDT 8.1.1 –