#defineがプロジェクトの.hファイルに宣言されているかどうかに基づいて、私のビルドに異なるディレクトリを入れたいと思います。これは可能ですか、これについて完全に間違っていますか?C defineがgnu Makefileで宣言されているかどうかテストできますか?
0
A
答えて
4
はい。ビルドシステムはコードを設定することになっていますが、その逆もありません。この種のオプションのためにconfigureスクリプトを使うべきです(おそらく上位のビルドシステムに切り替える:autotools、CMake、QMake ...)。
1
これは可能ですが、あなたは間違った方法をとっています。異なるディレクトリを含める方法は、異なるmakeターゲットを使用することです。コードでそれらについて知っている必要がある場合は、コンパイラスイッチで-D
を使用してください。また、ビルドが他の人のシステムで実行できる必要がある場合は、autoconfのようなものがあります。
4
他の回答から、これが悪い考えである理由が説明されています。
foo.mk.in
で:
#ifdef FOO
FOO_DEFINED := y
#else
FOO_DEFINED := n
#endif
Makefile
で:
foo.mk: foo.mk.in
$(CPP) $(CPPFLAGS) -o [email protected] $<
include foo.mk
ifeq ($(FOO_DEFINED),y)
$(warning FOO is defined)
else
$(warning FOO is not defined)
endif
関連する問題
- 1. libgit2 GIT_BUF_INITは宣言されていません。それはどこで宣言されるべきですか?
- 2. クラスフィールドはC++でどのように宣言されるべきですか?
- 3. C言語でlong long [(、)]宣言をどうにかして使うことができますか?
- 4. タイプが既にC#の別のソースファイルで宣言されているかどうかを知るには?
- 5. ログはどこで宣言されていますか?
- 6. struct vop_vectorはどこで宣言されていますか?
- 7. 変数は宣言でのみ強調されていますか? (Emacs C++ - mode)
- 8. C++関数が宣言されていませんか?
- 9. はfstreamオブジェクトを宣言できませんか?それをポインタとして宣言できますか?
- 10. アクターメッセージはどこで宣言されるべきですか?
- 11. C++の宣言はどういう意味ですか?
- 12. C++で「宣言」はいつ使用されますか?
- 13. 関数宣言でC++のmem_fn(member_function)を宣言するにはどうすればよいですか?
- 14. GCCで-std = C++ 11を使用すると__v2diはどこで宣言されますか?
- 15. C++ - '(const char *)'はスコープ内で宣言されていませんか?
- 16. 三角関数はGNU Cライブラリでどのようにテストされていますか?
- 17. どのようにしてhashmapを宣言できますか?
- 18. Classクラスは宣言されています/それを宣言する方法はどこですか?
- 19. gnu-makeは、cmd.exeで呼び出された場合、makefileのクォートをどのように扱いますか?
- 20. 宣言されたC関数はどのように実装されていませんか?
- 21. C++シンボルがXcodeで#defineされているかどうかを確認する方法
- 22. グローバルが宣言されていないかどうかをwebpackが知る方法はありますか?
- 23. GNUのMakefile、Cプログラミング
- 24. ソケットがCで接続されているかどうかのテスト#
- 25. OutlookがC#例外処理でインストールされているかどうかのテスト
- 26. .dllファイルに宣言されているかどうかを確認するメソッド
- 27. なぜGADBannerViewが宣言されていないのですか?
- 28. なぜ 'EINTR'が宣言されていないのですか?
- 29. クラスで宣言されているインスタンスをグローバル化できますか?
- 30. Coding4funツールキットAboutPromptはXAMLで宣言されていますか?
良い仕事とはいえ、それを行うための一つの方法は、メイクファイルの断片を前処理することです。ちょうどそれを行ってください。 –