我有一个Qt项目,我想在源树之外输出编译文件.
我目前有以下目录结构:
/
|_/build
|_/mylib
|_/include
|_/src
|_/resources
Run Code Online (Sandbox Code Playgroud)
根据配置(调试/发布),我想在build/debug或build/release目录下的build目录中输出结果文件.
我怎么能用.pro文件呢?
我有以下Makefile,我想将其配置为默认生成调试版本并通过指定相应的目标发布版本。
我现在正在尝试解决的问题如下, - 项目包含单元测试,我希望它们包含在默认构建中,但从发布中排除,所以我将发布目标添加到 Makefile:
FC = ifort
FFLAGS = -c -free -module modules -g3 -warn all -warn nounused
LDFLAGS = -save-temps -dynamiclib
INTERFACES = src/Foundation.f units/UFoundation.f units/Asserts.f units/Report.f
EXCLUDES = $(patsubst %, ! -path './%', $(INTERFACES))
SOURCES = $(INTERFACES) \
$(shell find . -name '*.f' $(EXCLUDES) | sed 's/^\.\///' | sort)
OBJECTS = $(patsubst %.f, out/%.o, $(SOURCES))
EXECUTABLE = UFoundation
all: $(SOURCES) $(EXECUTABLE)
release: SOURCES := $(filter-out units/%.f, $(SOURCES))
release: OBJECTS := $(filter-out units/%.o, $(OBJECTS))
release: EXECUTABLE := 'Foundation.dlyb' …Run Code Online (Sandbox Code Playgroud) 背景:
我对Make还是比较陌生,因此我开始为我最近制作的Othello游戏构建makefile。我当前的makefile比较简单。但是,我希望进一步完善它并添加构建和存档功能。
问题1:为什么不打扫工作?
问题2:对于归档,我打算使用
# tar cvzf *.o Othello
Run Code Online (Sandbox Code Playgroud)
存档时,将编译时生成.o和可执行文件。这是一种好的标准做法还是有更好的方法呢?
问题3:对于构建部分,我计划使用./Othello运行可执行文件,这是在Makefile中进行构建的最佳实践吗?
git存储库发布在下面,谢谢您的时间
全部:奥赛罗
Othello: main.o Myothello.o space.o game.o
clang++ main.o Myothello.o space.o game.o -o Othello
main.o: main.cc
clang++ -c main.cc
game.o: game.cc
clang++ -c game.cc
Myothello.o: Myothello.cc
clang++ -c Myothello.cc
space.o: space.cc
clang++ -c space.cc
clean:
rm -f *.o core *.core
rm MyOthello
Run Code Online (Sandbox Code Playgroud)