我已经可以编译不同的目标或版本(调试版本),但问题是当我创建:make debug
或make release
时,这会在相应的文件夹文件夹中生成对象和库。
这是Makefile.am:
AM_CXXFLAGS = @AM_CXXFLAGS@
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
lib_LIBRARIES = libInitDB.a
libInitDB_a_SOURCES = \
InitDB.cpp
.PHONY: debug release
debug:
make CXXFLAGS='$(CXX_DEBUG_FLAGS) $(CXXFLAGS)'
mkdir -p $(DEBUG_DIR)
mv $(lib_LIBRARIES) $(DEBUG_DIR)/$(lib_LIBRARIES)
mv *.o $(DEBUG_DIR)
release:
make CXXFLAGS='$(CXX_RELEASE_FLAGS) $(CXXFLAGS)'
mkdir -p $(RELEASE_DIR)
mv $(lib_LIBRARIES) $(RELEASE_DIR)/$(lib_LIBRARIES)
mv *.o $(RELEASE_DIR)
但问题是,当我移动对象和库时,再次生成:make debug
或make release
,再次生成已存储在调试或释放文件夹中的对象和库
有人可以帮我找到如何避免这种情况以及当我在正确的文件夹中编译该搜索时吗?
答案 0 :(得分:2)
您可以使用不同的选项配置两个单独的构建目录,而不是让一个Makefile
生成两种目标。
例如:
mkdir debug
(cd debug && ../configure --enable-debug)
mkdir release
(cd release && ../configure --enable-release)
这样,您只需输入make
即可转到任一目录并重新编译所需内容。