當使用很常見,生成config.h
文件通過指定AC_CONFIG_HEADERS
宏configure.ac
這樣的自動工具:CMake的生成類似的config.h Autoconf中
AC_CONFIG_HEADERS([config.h])
,這是什麼相應的等價使用CMake的時候?
當使用很常見,生成config.h
文件通過指定AC_CONFIG_HEADERS
宏configure.ac
這樣的自動工具:CMake的生成類似的config.h Autoconf中
AC_CONFIG_HEADERS([config.h])
,這是什麼相應的等價使用CMake的時候?
您必須創建一個類似於config.h.in
的文件。像
#cmakedefine HAVE_FEATURE_A @[email protected]
#cmakedefine HAVE_FEATURE_B @[email protected]
#cmakedefine HAVE_FEATURE_BITS @[email protected]
東西然後你必須聲明變量Feature_A_FOUND
,Feature_B_FOUND
,B_BITSIZE
在CMake的代碼,並呼籲
configure_file(config.h.in config.h)
這將導致類似於從自動工具的一個一個的config.h文件。如果找不到變量或設置爲false,則該行將被註釋。否則,該值將被插入。假設Feature_A_FOUND=A-NOTFOUND
¸Feature_B_FOUND=/usr/lib/b
,B_BITSIZE=64
,這將導致在
/* #undef HAVE_FEATURE_A @[email protected] */
#define HAVE_FEATURE_B /usr/lib/b
#define HAVE_FEATURE_BITS 64
大概HAVE_FEATURE_B將得到更好的定義爲#cmakedefine01
,這導致取決於變量的值0或1。
通常可以創建由Autotools生成的每個config.h文件,因爲CMake更加靈活。但是它需要更多的工作,並且你不能自動獲得config.h,但你必須自己編寫.in文件。
文檔: https://cmake.org/cmake/help/v3.6/command/configure_file.html
見[具體](https://cmake.org/cmake/help/v3.0/command/configure_file.html)和 [一般](HTTP:// WWW。 vtk.org/Wiki/CMake:How_To_Write_Platform_Checks)文檔。 –
[CMake:如何檢查Autotools中的頭文件和庫函數?](http://stackoverflow.com/questions/647892/cmake-how-to-check-header-files-and-library-functions樣功能於自動工具) – usr1234567