Нужна ваша помощь при проектировании make-файла. Итак, что у меня есть и чего я хочу получить. Мне нужно создать два исполняемых файла. Исходный код распространен. Препроцессор макросов контроль различий для обоего EXEs, например, в main.cpp:Проецирование make-файла для конфигураций отладки/выпуска
#if PROJECT_TYPE==FTP
std::cout << "FTP" << std::endl;
#else
std::cout << "SFTP" << std::endl;
#endif
Различие не только в исходном коде, но и в дополнительных библиотеках, которые используются для связи:
FTP_LDFLAGS= -static-libstdc++ -static-libgcc -s -L $(ROOT_DIR)/lib/Release -l:libboost_thread-mgw46-mt-1_49.a -l:libcommon.a \
-l:libfile.a -l:libfilesearcher.a -l:libftpclient.a -l:libftplib.a -l:libdbclient.a -l:libsqlite3.a -l:libscheduler.a -l:libws2_32.a
SFTP_LDFLAGS= -static-libstdc++ -static-libgcc -s -L $(ROOT_DIR)/lib/Release -l:libboost_thread-mgw46-mt-1_49.a -l:libcommon.a \
-l:libfile.a -l:libfilesearcher.a -l:libdbclient.a -l:libsqlite3.a -l:libscheduler.a -l:libsftpclient.a -l:libws2_32.a -l:libssh.dll
Также я хочу создать отладки/освобождение целей сборки с собственными CXXFLAGS и выходными каталогами, так и в результате получить следующее:
TARGETS= ftp_auto_backup sftp_auto_backup
Я хочу использовать неявное правило для компиляции, чем-л так:
%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $< -o $(O_DIR)/[email protected]
Но как я могу указать отдельный O_DIR для каждого целевого Int $ (ЦЕЛЕЙ) и для каждой конфигурации сборки? Моя основная проблема заключается в этом шаге. Я могу вставить весь файл makefile, который у меня есть в данный момент, но он все равно ничего не построит. На всякий случай здесь: http://pastebin.com/jjB5Ld1s
Заранее спасибо, ребята!
Вы хотите построить обе версии с одним вызовом Make? Или это достаточно, чтобы иметь возможность строить любую версию? – Beta
@Beta, это будет нормально, если make будет вызываться отдельно для каждой версии: make && make debug. – andryuhat