gpt4 book ai didi

c++ - 如何使用 Jam make 工具构建项目的不同版本?

转载 作者:太空狗 更新时间:2023-10-29 23:10:22 25 4
gpt4 key购买 nike

我有一个 C++ 项目可以编译成不同的版本,包括发布版、调试版、共享库和可执行文件,每个版本都有不同的编译器标志。我正在试用 Jam 作为 Make 的替代品,因为它看起来是一个更简单的系统。

Jam 有这个能力吗?主要问题是它总是将 .o 文件放在与源文件相同的文件夹中,因此在构建多个版本时会覆盖它们。

更新

我找到了一个似乎有效的解决方案。使用此文件,我可以构建库或可执行文件的调试和发布配置。

构建发布库的命令:

jam -s config=lib -s release=1

如果您只键入 jam,它会构建调试可执行文件。这是 Jam 文件:

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) ;

最佳答案

不过我不熟悉 Perforce 的 Jam bjam允许这样做——而且非常简单。 bjam 不会将中间文件放在与源文件相同的目录中;它会根据您正在构建的项目类型创建 debug/release/static/shared 目录。

例如,如果你想构建一个库的发布和调试版本,并且你想静态地构建它:

bjam debug release link=static

bjam 确实有一些怪癖,但我们发现它非常有效。目前我们使用(几乎)相同的构建脚本来构建我们的系统,使用 msvc(8.0 和 9.0)、x86 上的 gcc 4.3、ARM 上的 gcc 3.4 和 PowerPC 上的 gcc 4.3。非常好。

关于c++ - 如何使用 Jam make 工具构建项目的不同版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com