我在同一级别有两个目录。我想使用在另一个目录的源文件中的一个目录中创建的头文件。我想实现相同的目的,而不提供头文件的相对或绝对路径。
目录结构是:
main_dir/
dir1/
main.cpp
Makefile.am
dir2/
abc.h
abc.cpp
Makefile.am
main.cpp
需要abc.h
。应该在两个目录的makefile中写什么来链接它们?
修改
dir2的Makefile.am
noinst_LIBRARIES = libabc.a
AM_CPPFLAG = -I$(main_dir)/dir2 \
$(APP_CFLAGS)
libabc_a_SOURCES = abc.h \
abc.cpp
dir1的Makefile.am
noinst_LIBRARIES = libmain.a
AM_CPPFLAG = -I$(main_dir)/dir1 \
$(APP_CFLAGS)
libmain_a_SOURCES = main.cpp
libmain_a_LIBADD = libabc.a
我收到错误:No rule to make target 'libabc.a', needed by 'libmain.a'. Stop.
答案 0 :(得分:0)
您可以将-I
选项与gcc或clang一起使用。 (注意这与makefile没有直接关系)
示例:如果当前目录是main_dir,并且您当前正在运行该命令:
gcc -c -o dir1/main.o dir1/main.cpp
您需要将其更改为:
gcc -Idir2 -c -o dir1/main.o dir1/main.cpp
答案 1 :(得分:0)
你已经拥有
AM_CPPFLAG = -I$(main_dir)/dir1 \
$(APP_CFLAGS)
只需将-I$(main_dir)/dir2
添加到其中:
AM_CPPFLAG = -I$(main_dir)/dir1 \
-I$(main_dir)/dir2 \
$(APP_CFLAGS)
现在您可以在代码中#include <abc.h>
。