メイクファイルの投影についてあなたの助けが必要です。だから、私が持っているものと私が手に入れたいもの。2 つの実行可能ファイルをビルドする必要があります。ソースコードは共通です。プリプロセッサ マクロは、main.cpp などで、両方の exe の違いを制御します。
#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 を指定するにはどうすればよいでしょうか? 私の主な問題は、このステップにあります。現時点で持っているすべてのメイクファイルを貼り付けることができますが、それでも何もビルドされません。念のため、ここにあります:http://pastebin.com/jjB5Ld1s
よろしくお願いします!