2016-07-17 10 views
3

から、それはこのようなconfigure.acAC_CONFIG_HEADERSマクロを指定してconfig.hファイルを生成することが一般的ですAutotool群を使用する場合のようにconfig.hの生成:CMakeのは、Autoconfの

AC_CONFIG_HEADERS([config.h]) 

CMakeのを使用して、このため、それぞれの同等とは何ですか?

+1

見る(https://cmake.org/cmake/help/v3.0/command/configure_file.html)[特定]と [一般](のhttp:// WWW。 vtk.org/Wiki/CMake:How_To_Write_Platform_Checks)のドキュメント。 –

+1

[CMake:Autotoolsのようなヘッダーファイルとライブラリ関数をチェックする方法?](http://stackoverflow.com/questions/647892/cmake-how-to-check-header-files-and-library-functions) autotoolsのような) – usr1234567

答えて

7

config.h.inのようなファイルを作成する必要があります。

#cmakedefine HAVE_FEATURE_A @[email protected] 
#cmakedefine HAVE_FEATURE_B @[email protected] 
#cmakedefine HAVE_FEATURE_BITS @[email protected] 

のようなものは、その後、あなたはFeature_A_FOUND、あなたのCMakeのコードでFeature_B_FOUNDB_BITSIZEとは呼んで変数を宣言する必要がautotoolsのからのものと同様にconfig.hファイルになります

configure_file(config.h.in config.h) 

。変数が見つからないか、またはfalseに設定されている場合は、その行にコメントが付けられます。それ以外の場合は、値が挿入されます。おそらくHAVE_FEATURE_Bより良い変数の値に応じて0または1をもたらす #cmakedefine01として定義される

/* #undef HAVE_FEATURE_A @[email protected] */ 
#define HAVE_FEATURE_B /usr/lib/b 
#define HAVE_FEATURE_BITS 64 

をもたらすであろう、Feature_A_FOUND=A-NOTFOUNDB_BITSIZE=64Feature_B_FOUND=/usr/lib/b°をとります。

一般に、CMakeはより柔軟なので、Autotoolsによって生成されたすべてのconfig.hファイルを作成することができます。しかし、より多くの作業が必要で、自動的にconfig.hを取得することはできませんが、.inファイルを自分で記述する必要があります。

ドキュメント: https://cmake.org/cmake/help/v3.6/command/configure_file.html