У меня есть проект 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) ;