我正在使用make编译一个C / C ++项目。但是,编译过程失败,并出现以下错误消息 - **编译lib / crypto / rsaCipher.c C:/ Davidviewservermain \ sysimg-UFA \波拉\ vmacore换UFA-SRC \波拉\ lib中\加密\ rsaCi pher.c(15):致命错误C1083:无法打开包含文件:' openssl / rsa.h':没有su ch文件或目录,我看到rsaCipher.c是包含rsa.h文件的哈希。但是,make进程无法打开头文件,即使它存在于openssl文件夹中。 make进程如何找到头文件的位置?他们的任何环境变量(如INCLUDE)是否为make进程检查所有头文件的搜索路径。我在windows中使用make。
答案 0 :(得分:0)
make进程如何找到头文件的位置?
它没有,它也不需要。它是需要找到它们的编译器 *,它是通过告诉它在配置包含搜索路径时的位置来实现的。
他们的任何环境变量(如INCLUDE)是否提供将由make进程检查的所有头文件的搜索路径。
这是基于编译器,而不是make。如果您的编译器检查包含搜索路径的任何环境变量,那么您可以在运行make之前设置它。
但是,您通常会在Makefile中设置一个变量,然后在编译规则中使用该变量:
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public
main: test.cpp
gcc -Wall $(LIB) $(INC) -c test.cpp
请注意,上面显示了如何将include路径放在编译命令中,但是它没有显示最佳实践:依赖关系不对,所以make并不总是知道它需要重建目标何时应该。我没有详细查看,但this问题和答案可能会帮助您制作健壮的makefile。
*嗯,实际上是预处理器,但是使用现代工具链,它嵌入在编译器可执行文件中,或者由编译器驱动程序自动调用。