ライブラリのバージョン番号を1か所に保存したい。だから私はCMakeファイルでそのような変数を定義しました:
SET(LIBINTERFACE_VERSION 1 CACHE INTEGER "Version of libInterface")
この定義を使用して、Microsoftの定義に従ってversion.rcファイルを生成できます。このファイルをライブラリにコンパイルすると、dllファイルのプロパティウィンドウに正しく表示されます。
このCMake変数をc ++ソースコードでも使用したいのですが、実際には機能する解決策がありません。私はこのようなさまざまなことを試しました:
#ifndef VERSION_LIBINTERFACE
# define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
#endif
またはこれ:
unsigned int getLibInterfaceVersion()
{
return @LIBINTERFACE_VERSION@;
}
しかし、コンパイラーは何も受け入れません。 CMake-Documentationでの私の研究結果は得られなかったので、誰かが私に本質的なアドバイスをしてくれることを願っています。
前もって感謝します。
これを行う最も簡単な方法は、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
次に、configure_file行をcmakelists.txtに追加します。
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がソースファイルに含まれていることを確認してください。