[英]How to read a CMake Variable in C++ source code
我想將庫的版本號存儲在一個地方。 因此,我在CMake文件中定義了這樣一個變量:
SET(LIBINTERFACE_VERSION 1 CACHE INTEGER "Version of libInterface")
使用此定義,我可以根據Microsoft的定義生成一個version.rc文件,將該文件編譯到庫中,然后正確顯示在dll文件的屬性窗口中。
現在,我也想在我的c ++源代碼中使用此CMake變量,但實際上並沒有找到有效的解決方案。 我已經嘗試過其他類似的事情:
#ifndef VERSION_LIBINTERFACE
# define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
#endif
或這個:
unsigned int getLibInterfaceVersion()
{
return @LIBINTERFACE_VERSION@;
}
但是編譯器不會接受任何東西。 由於我在CMake文檔中的研究沒有得到任何結果,因此我希望有人能給我必要的建議。
提前致謝。
最簡單的方法是將LIBINTERFACE_VERSION作為帶有add_definition的定義傳遞 :
add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )
但是,您也可以創建“頭文件模板”並使用configure_file 。 這樣,CMake將替換您的@ LIBINTERFACE_VERSION @。 這也更具擴展性,因為您可以在此處輕松添加額外的定義或變量...
例如,創建一個文件“ version_config.h.in”,如下所示:
#ifndef VERSION_CONFIG_H
#define VERSION_CONFIG_H
// define your version_libinterface
#define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
// alternatively you could add your global method getLibInterfaceVersion here
unsigned int getLibInterfaceVersion()
{
return @LIBINTERFACE_VERSION@;
}
#endif // VERSION_CONFIG_H
然后在您的cmakelists.txt中添加configure_file行:
configure_file( version_config.h.in ${CMAKE_BINARY_DIR}/generated/version_config.h )
include_directories( ${CMAKE_BINARY_DIR}/generated/ ) # Make sure it can be included...
當然,請確保源文件中包含正確的version_config.h。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.