C++ 通过makefile链接文件
我有两个相同级别的目录。我想使用在另一个目录的源文件中的一个目录中创建的头文件。我希望在不提供头文件的相对或绝对路径的情况下实现相同的功能 目录结构为:C++ 通过makefile链接文件,c++,linker,makefile,C++,Linker,Makefile,我有两个相同级别的目录。我想使用在另一个目录的源文件中的一个目录中创建的头文件。我希望在不提供头文件的相对或绝对路径的情况下实现相同的功能 目录结构为: main_dir/ dir1/ main.cpp Makefile.am dir2/ abc.h abc.cpp Makefile.am main.cpp需要abc.h。在这两个目录的makefile中应该写些什么来链接它们 编辑 dir2的Makefile.am noinst_LIB
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
我得到一个错误:
没有规则使目标为'libmain.a'所需的'libabc.a'。停止。
您可以将-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
你已经有了
AM_CPPFLAG = -I$(main_dir)/dir1 \
$(APP_CFLAGS)
只需将-I$(主目录)/dir2
添加到其中:
AM_CPPFLAG = -I$(main_dir)/dir1 \
-I$(main_dir)/dir2 \
$(APP_CFLAGS)
因此,现在您可以在代码中包含。您需要提供每个文件的相对/完整路径,或者使用类似于指令的内容。通过“链接它们”,您是否希望在main.cpp includes main\u dir2/abc.h中包含@我想知道如何实现它?我只需要在makefile中完成。我已经编辑了我的问题。请检查!