【发布时间】:2012-04-20 01:39:25
【问题描述】:
在投影生成文件方面需要您的帮助。所以,我有什么,我想得到什么。我需要构建两个可执行文件。源代码很常见。预处理器宏控制两个 exe 的差异,例如在 main.cpp 中:
#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)/$@
但是如何为每个目标 int $(TARGETS) 和每个构建配置指定单独的 O_DIR?我的主要问题是在这一步。我可以粘贴我现在拥有的所有 makefile,但它仍然不会构建任何东西。以防万一:http://pastebin.com/jjB5Ld1s
提前谢谢各位!
【问题讨论】:
-
您想通过一次调用 Make 来构建两个版本吗?还是能够构建任一版本就足够了?
-
@Beta,如果为每个版本单独调用make就可以了:make && make debug。