生成文件应该在另一个目录中搜索 .o 文件
Makefile should search for .o files in another directory
所以我正在使用 autoconf 来生成一个 Makefile,并且我已经成功地这样做并编译了我的项目,但问题是目标文件是在 src
文件夹中创建的。我希望将它们编译在.libs
文件夹中。
我也能够做到这一点,但随后出现了另一个问题,编译器在与.cpp
文件(src
)相同的文件夹中搜索这些.o
文件。
我已经尝试了所有方法,包括:
%.o: $(SDIR)/%.cpp
$(CC) $(CFLAGS) -o $(OBJDIR)/$@ -c $<
和
$(OBJDIR)/%.o: %.c
$(CC) -c -o $@ $< $(CFLAGS)
以及许多其他我什至不记得的组合。出于某种原因,这些规则最终不会在 .libs
文件夹中查找对象文件,并且在运行 make 时出现错误:
g++: error: One.o: No such file or directory
g++: error: Two.o: No such file or directory
g++: error: Three.o: No such file or directory
g++: error: Four.o: No such file or directory
到目前为止,这是我 Makefile.am:
CFLAGS=-Wall -I/chome/siddhs/soft/soft_source_code/target/src/include/ -I/home/siddhs/EclipseProjects/rdma2/include
AM_LDFLAGS=-L /usr/pbs/new/exec/lib/ -lsoft -lpthread -llmx-altair -L /usr/lib/x86_64-linux-gnu/ -lcrypto -L . -lsoft
OUT=rdma2.a
CC=g++
OBJDIR=/home/siddhs/EclipseProjects/rdma2/.libs
SDIR=/home/siddhs/EclipseProjects/rdma2/src
INC=-Iinc
ADIR=/usr/local/rdma2/
bin_PROGRAMS=rdma2test
rdma2test_SOURCES = One.cpp Two.cpp Three.cpp Four.cpp
rdma2test_LDADD=-L /usr/soft/new/exec/lib -lsoft -lpthread -L /usr/lib/x86_64-linux-gnu/ -lcrypto
_OBJS = One.o Two.o Three.o Four.o
%.o: $(SDIR)/%.cpp
$(CC) $(CFLAGS) -o $(OBJDIR)/$@ -c $<
$(OBJDIR)/%.o: %.c
$(CC) -c -o $@ $< $(CFLAGS)
最简单的方法是在.libs
目录中创建第二个Makefile.am
。前Makefile.am
只需要指向第二Makefile.am
。第二个将描述所有构建过程。
一个简单的示例将包含以下内容。
Makefile.am
SUBDIRS = .libs
.libs/Makefile.am
bin_PROGRAMS=rdma2test
noinst_LIBRARIES= librdma2.a
AM_LDFLAGS=-L.
librdma2_a_SOURCES = $(SRC)/One.cpp $(SRC)/Two.cpp
rdma2test_SOURCES = $(SRC)/Main.cpp
rdma2test_LDADD= -lrdma2
configure.ac
AC_INIT([rdma2],[1.0])
AC_CONFIG_SRCDIR([src/Main.cpp])
AM_INIT_AUTOMAKE
AC_PROG_CXX(g++)
AC_PROG_RANLIB
SRC=`pwd`"/src"
AC_SUBST(SRC)
AC_OUTPUT([Makefile .libs/Makefile])
注意:使用此配置,更高版本的automake
会发出警告消息。
相关文章:
- cmake:添加要搜索头文件的目录
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 在树结构.txt文件中搜索节点
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- Glob 搜索目录也会返回文件
- 从C++文件中搜索艺术家姓名和歌曲
- 按单词搜索文件,然后在C++中打印特定行数
- 如何获取组件和搜索 CSV 文件
- 如何搜索文本文件并以C++打印该行
- 通过搜索硬盘驱动器查找文件目录
- 在C++目录中搜索文件的函数输出中出错
- 使用Visual Studio C++按名称搜索目录中的文件
- 简单的二分搜索对我不起作用。我正在尝试从文本文件中搜索单词
- 完成搜索任务时为空输出文件
- 如何使用 C++ 在 txt 文件中搜索字符
- 在 txt 文件中搜索中间子字符串未被选中的字符串
- 从文件搜索搜索单词,然后将整个行复制到另一个文件
- 递归文件搜索出现问题
- Linux下的文件搜索api
- c++文件搜索数据库文件并计算下一行