【问题标题】:compiler doesn't know my include file编译器不知道我的包含文件
【发布时间】:2012-05-15 11:59:49
【问题描述】:

我正在使用 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  

【问题讨论】:

    标签: c++ compilation include g++


    【解决方案1】:

    比较:

    你的命令 -

    -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/

    【讨论】:

    • 谢谢大家的回答,现在真的更清楚了,可以了
    【解决方案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

    【讨论】:

      【解决方案3】:

      您正在为输入文件指定[...]inc/include/cppunit 路径,但将标头称为cunit/extensions/HelperMacros.h 这意味着编译器期望相对于[...]inc/include/cppunit 的路径并以[...]inc/include/cppunit/cunit/extensions/HelperMacros.h 结束。您只需为包含目录指定[...]inc/include(或将标头路径更改为extensions/HelperMacros.h

      【讨论】:

        【解决方案4】:

        它根本找不到文件。您正在尝试包含cppunit/extensions/HelperMacros.h,因此请检查您的构建输出中的所有-I 包含路径,看看它们是否连接到该文件的有效路径。它们不会,因为您缺少目录。

        下一步是完成 cppunit 安装并找到您的文件:

        find <cppunit root> -name HelperMacros.h
        

        当您找到一个以 cppunit/extensions/HelperMacros.h 包含结尾的文件时,将其从末尾剥离,并将路径的第一部分用作编译命令中的额外 -I 包含路径。

        【讨论】:

          【解决方案5】:

          在运行 Ubuntu 时,我发现您可以简单地使用

          安装正确的东西

          对于 cppunit/extensions/HelperMacros.h 或 cppunit/BriefTestProgressListener.h:

          sudo apt-get install libcppunit-dev
          

          【讨论】:

            猜你喜欢
            • 2014-09-11
            • 1970-01-01
            • 2017-06-21
            • 2017-01-19
            • 2022-11-16
            • 2022-12-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多