c++ - 使文件无法打开 header

标签 c++ c cmake makefile

我正在使用 make 编译 C/C++ 项目。但是,编译过程失败,并显示以下错误消息 -** Compiling lib/crypto/rsaCipher.c C:/Davidviewservermain\sysimg-ufa\bora\vmacore-for-ufa-src\bora\lib\crypto\rsaCi pher.c(15): fatal error C1083:无法打开包含文件:'openssl/rsa.h':无 su ch 文件或目录,,我看到 rsaCipher.c 是包含 rsa.h 文件的哈希。但是,即使头文件存在于 openssl 文件夹中,make 进程也无法打开该头文件。 make 进程如何找到头文件的位置?它们是否有像 INCLUDE 这样的环境变量来给出将由 make 过程检查的所有头文件的搜索路径。我在 Windows 中使用 make。

最佳答案

How does the make process find the location of header files?

它没有,也不需要。 编译器*需要找到它们,它是通过您在配置包含搜索路径时告诉它要查找的位置来实现的。

Is their any environmental variable like INCLUDE to give the search path of all the header files which will be checked by make process.

这是基于编译器,而不是make。如果您的编译器检查包含搜索路径的任何环境变量,那么您可以在运行 make 之前进行设置。

但是,通常您会在 Makefile 中设置一个变量,然后在编译规则中使用该变量:

INC=-I/usr/informix/incl/c++ /opt/informix/incl/public

main:   test.cpp
        gcc -Wall $(LIB) $(INC) -c test.cpp

请注意,上面显示了如何将包含路径放入编译命令中,但它没有显示最佳实践:依赖关系不正确,因此 make 并不总是知道它需要在应该重建目标时进行重建。我没有详细看过,但是this问题和答案可能会帮助您生成强大的 makefile。

* 嗯,确实是预处理器,但是使用现代工具链,它会嵌入到编译器可执行文件中或由编译器驱动程序自动调用。

关于c++ - 使文件无法打开 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596920/

相关文章:

c++ - 库正在调用可执行文件内的函数,而不是库内的函数

c++ - 使用 RapidXML 解析

c++ - 如何隐藏数独表中的数字?

C、Socket编程 : 1 Server 2 Clients connected by HUB, 使用TCP的聊天应用

c - 为什么我的 setuid 功能不起作用?

c - 方法内的指针和函数调用

CMake 构建后事件 : copy compiled libraries

php - 适用于 Linux 的轻量级 IDE

c++ - 在 Visual Studio 中的 dll 内的函数处设置断点?

cmake - 使用 CMake 使用 LLVM LLD 发出单个 IR 位码文件