ここで説明したものと同様のライブラリの命名スキームを実装したいと思います: x32とx64のライブラリ名
CMakeLists.txtファイルは、静的ライブラリを作成するように設定されています
add_library(test test.h test.cpp)
CmakeリストからVisualStudioソリューションを作成した後、プロジェクトは、デバッグライブラリtest.libが/x64/Debug/test.lib
に書き込まれ、リリースバージョンが/x64/Release/test.lib
に書き込まれるように設定されます。両方を/lib/
に書き込みたいのですが、デバッグバージョンに「d」を追加します。アイデアは取得することです
/lib/test.lib
/lib/testd.lib
可能であれば、64ビットビルド用の追加のサフィックスを取得します
/lib/test.lib
/lib/test64.lib
/lib/testd.lib
/lib/test64d.lib
これを行う簡単な方法はありますか?
編集:これは、次のようなライブラリを使用して、プロジェクトで後でうまく使用できます: Windows上のCmakeでデバッグビルドとリリースビルドの異なるライブラリをリンクしますか?
編集:出力からDebugフォルダーとReleaseフォルダーを削除する際に問題が発生しました。これは、次の回答で修正できます。 ReleaseまたはDebugを出力パスに追加しない方法は?
CMAKE_DEBUG_POSTFIX
は、デバッグライブラリのd
を追加するために使用されます。
set(CMAKE_DEBUG_POSTFIX d)
これをグローバルに設定したくない場合は、選択したライブラリで代わりに DEBUG_POSTFIX
ターゲットプロパティを使用することもできます。
32/64ビットビルドを区別するための対応する機能はありませんが、同じCMake構成でこれら2つを混在させることは不可能であるため、これらのケースを手動で簡単に区別できます。
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(Arch_POSTFIX "")
else()
set(Arch_POSTFIX 64)
endif()
add_library(my_lib${Arch_POSTFIX} [...])
または、異なるアーキテクチャで同じターゲット名を使用する場合は、 CMAKE_STATIC_LIBRARY_SUFFIX
のような変数を設定します(それらは多数存在するため、適切なものを選択できます。ターゲットタイプと、サフィックスを追加する出力ファイルに基づきます)。
また、そのようなライブラリを見つけるために この回答 についても言及したので:target_link_libraries
の粗粒度のレガシーdebug
およびoptimized
修飾子の代わりにインポートされたターゲットを使用することをお勧めします。 構成ファイルパッケージ このようなインポートされたターゲットをクライアントに公開する便利な方法を提供し、サフィックスのシェナニガンも自動的に処理します。