我有一个 C++ 项目,可以编译成不同的版本,包括发布、调试、共享库和可执行文件,每个版本都有不同的编译器标志。我正在尝试将 Jam 作为 Make 的替代品,因为它看起来像一个更简单的系统。
果酱有这个能力吗?主要问题是它总是将 .o 文件与源文件放在同一个文件夹中,因此在构建多个版本时会覆盖它们。
更新
我找到了一个似乎可行的解决方案。使用此文件,我可以构建库或可执行文件的调试和发布配置。
构建发布库的命令:
jam -s config=lib -s release=1
如果您只键入jam
,它会构建调试可执行文件。这是 Jamfile:
FILES =
main.cpp
;
BASENAME = steve ;
OBJ = obj ;
if $(release)
{
OBJ = $(OBJ)r ;
}
else
{
DEFINES += DEBUG ;
OBJ = $(OBJ)d ;
}
if $(config) = lib
{
OBJ = $(OBJ)_lib ;
OUTFILE = lib$(BASENAME).so ;
DEFINES += SHARED_LIBRARY ;
LINKFLAGS +=
-shared -Wl,-soname,$(OUTFILE) -fvisibility=hidden -fPICS
;
}
else
{
OUTFILE = $(BASENAME) ;
}
LOCATE_TARGET = $(OBJ) ;
MkDir $(LOCATE_TARGET) ;
Main $(OUTFILE) : $(FILES) ;