2012-05-15 54 views
1

我正在使用g ++和jamroot文件(jamroot.jam)編譯我的項目。我不知道爲什麼它不知道我的文件,即使它包含正確的目錄。編譯器不知道我的包含文件

這裏是輸出:

"g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -fPIC -DLINUX \ 
    -I"/home/oumaya/docs/UT_Cpp_Test/main/inc" \ 
    -I"/home/oumaya/docs/UT_Cpp_Test/main/inc/include/cppunit" \ 
    -I"/home/oumaya/docs/UT_Cpp_Test/main/inc/include/cppunit/ui/qt" \ 
    -I"/usr/share/boost" -c -o "bin/build/gcc-4.6/debug/src/main.o" "src/main.cpp" 

In file included from src/main.cpp:6:0: 
/home/oumaya/docs/UT_Cpp_Test/main/inc/UT_Instrument_Test.hpp:7:45: fatal error: 
    cppunit/extensions/HelperMacros.h : No such file or directory 

回答

2

比較:

你的命令 -

-I"/home/oumaya/docs/UT_Cpp_Test/main/inc/include/cppunit" 

錯誤消息:

fatal error: cppunit/extensions/HelperMacros.h : No such file or directory 

即,「包含根」預計爲/home/oumaya/docs/UT_Cpp_Test/main/inc/include,而不是「cppunit」子目錄(這顯然是在#include指令)。

或者,您的#include聲明是錯誤的,並且不應該在extensions/HelperMacros.h前面有cppunit/

+0

謝謝大家對你的答案是現在更清晰,它的工作 – Oumaya

2

你缺少一個:

-I/home/oumaya/docs/UT_Cpp_Test/main/inc/include/ 

的原因是,你有這樣的:

#include "cppunit/extensions/HelperMacros.h" 

和完整路徑是

/home/oumaya/docs/UT_Cpp_Test/main/inc/include/cppunit/extensions/HelperMacros.h 

因此你應該告訴編譯的相對路徑爲cppunit/extensions/HelperMacros.h

1

它根本找不到文件。您正試圖包含cppunit/extensions/HelperMacros.h,因此請仔細檢查構建輸出中的所有-I include路徑,並查看它們是否連接在一起以形成該文件的有效路徑。他們不會因爲你錯過了一個目錄。

下一步是要經過CppUnit的安裝,找到您的文件:

find <cppunit root> -name HelperMacros.h 

當你找到一個與你的cppunit/extensions/HelperMacros.h包括結束,帶,其咬下結束和使用路徑的第一部分作爲額外的-I在你的編譯命令中包含路徑。

2

您指定[...]inc/include/cppunit路徑輸入文件,而是指頭爲cunit/extensions/HelperMacros.h這意味着編譯器是相對路徑期待[...]inc/include/cppunit[...]inc/include/cppunit/cunit/extensions/HelperMacros.h結束。你只需要指定[...]inc/include爲包括目錄(或更改標題路徑extensions/HelperMacros.h

0

當運行Ubuntu,我發現,你可以簡單地用

有關的CppUnit /擴展/ HelperMacros.h或CppUnit的/ BriefTestProgressListener.h安裝正確的東西:

sudo apt-get install libcppunit-dev 
相關問題