CMakeでは、CPackを使用して、-debug
サフィックスを含めると、CPACK_PACKAGE_FILE_NAME
には、パッケージがデバッグ構成から生成される場合に対応します。単一構成のCMakeジェネレータの場合、これはおそらくCMAKE_BUILD_TYPE
をチェックすることで可能ですが、Visual Studioなどのマルチコンフィギュレーションジェネレータでは機能しません。設定に基づいてCPackパッケージファイル名を変更するにはどうすればよいですか?
3
A
答えて
0
私はadd_custom_target
+ expression generator
+ standalone cmake script for the cpack
を通してそれを作っています
if (NOT CPACK_BUNDLE_TEMPLATE_CONFIG_FILE)
message(FATAL_ERROR "* CPACK_BUNDLE_TEMPLATE_CONFIG_FILE variable must be defined!")
endif()
if (NOT CPACK_BUNDLE_OUTPUT_CONFIG_FILE)
message(FATAL_ERROR "* CPACK_BUNDLE_OUTPUT_CONFIG_FILE variable must be defined!")
endif()
CONFIGURE_FILE("${CPACK_BUNDLE_TEMPLATE_CONFIG_FILE}" "${CPACK_BUNDLE_OUTPUT_CONFIG_FILE}")
CPackMakeConfig.cmake
CMakeLists.txt
...
set(CPACK_PACKAGE_VERSION "1.0.0.0")
set(CPACK_MONOLITHIC_INSTALL 1)
set(CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/BundleConfig.cmake")
include(CPack)
set(CPACK_BUNDLE_TEMPLATE_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackConfig.cmake.in")
set(CPACK_BUNDLE_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackProperties.cmake")
# make cpack configuration template for later replacements with the expression generator support
file(WRITE "${CPACK_BUNDLE_TEMPLATE_CONFIG_FILE}" "")
file(APPEND "${CPACK_BUNDLE_TEMPLATE_CONFIG_FILE}" "set(CPACK_PACKAGE_FILE_NAME \"\${CPACK_PACKAGE_FILE_NAME}\")\n")
add_custom_target(bundle
COMMAND ${CMAKE_COMMAND}
# this one must be written as is, DO NOT put the `$<CONFIGURATION>` inside a variable!
-D "CPACK_PACKAGE_FILE_NAME=${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-win32-$<CONFIGURATION>"
-D "CPACK_BUNDLE_TEMPLATE_CONFIG_FILE=${CPACK_BUNDLE_TEMPLATE_CONFIG_FILE}"
-D "CPACK_BUNDLE_OUTPUT_CONFIG_FILE=${CPACK_BUNDLE_OUTPUT_CONFIG_FILE}"
# this one must be after all `-D`s
-P "${CMAKE_CURRENT_LIST_DIR}/CPackMakeConfig.cmake"
COMMAND "${CMAKE_CPACK_COMMAND}"
"-G" "NSIS"
"-C" "$<CONFIGURATION>"
"--config" "${CPACK_OUTPUT_CONFIG_FILE}")
INCLUD自動的cpack
ので、コンフィグレーションスクリプトBundleConfig.cmake
の最後にCPackProperties.cmake
スクリプトがある場合は、cpack
実行前にcmakeビルドステージ(BUNDLE
ターゲット)に実際の値を書き込むだけで済みます。
cmake --build . --config Debug --target BUNDLE
関連する問題
- 1. 設定に基づいてライブラリパスを変更するにはどうすればよいですか?
- 2. アクションメソッドの名前に基づいてタイトルフォームを変更するにはどうすればよいですか?
- 3. パラメータに基づいてfrom句のテーブル名を変更するにはどうすればよいですか?
- 4. ページ名に基づいてjavascriptのCSSリンクを変更するにはどうすればよいですか?
- 5. タイプに基づいてジェネリッククラスのリストを設定するにはどうすればよいですか?
- 6. ユーザ設定に基づいてCSSスタイルをロードするにはどうすればよいですか?
- 7. SqlAlchemy関係に基づいてモデルのデフォルトを設定するにはどうすればよいですか?
- 8. htmlのenum値に基づいてテキストを設定するにはどうすればよいですか?
- 9. 親のAlternateIndexに基づいて子のスタイルを設定するにはどうすればよいですか?
- 10. Kivy - 表示サイズに基づいてウィンドウサイズを設定するにはどうすればよいですか?
- 11. 解像度に基づいてコントロールのサイズを変更するにはどうすればよいですか?
- 12. レールのページタイトルに基づいてボディタグIDを変更するにはどうすればよいですか?
- 13. pingに基づいてラベルテキストを変更するにはどうすればよいですか?
- 14. ユーザーグループに基づいてDjangoテンプレートを変更するにはどうすればよいですか?
- 15. アプリフレーバに基づいてマニフェストの権限を変更するにはどうすればよいですか?
- 16. クエリ文字列に基づいてコンテンツを変更するにはどうすればよいですか?
- 17. SAPUI5 - モデルデータに基づいてFeedListItemのスタイルを変更するにはどうすればよいですか?
- 18. .NET Core:URL構造に基づいて認証を変更するにはどうすればよいですか?
- 19. チェックボックスに基づいてdatepickerオプションを変更するにはどうすればよいですか?
- 20. デバイスに基づいてナビゲーションバーのサイズを変更するにはどうすればよいですか?
- 21. 選択したオプションに基づいてテキストを変更するにはどうすればよいですか?
- 22. 検索オプションに基づいてマーカー画像を変更するにはどうすればよいですか?
- 23. dropdown2に基づいてテキストを変更するにはどうすればよいですか?
- 24. クッキーに基づいてリンクを変更するにはどうすればよいですか?
- 25. ユーザーの場所に基づいてデータを変更するにはどうすればよいですか?
- 26. ユーザードロップダウン選択オプションに基づいてクエリを変更するにはどうすればよいですか?
- 27. ワークシートのセルに基づいてタブの色を変更するにはどうすればよいですか?
- 28. 幅に基づいてテキストフィールドのプレースホルダを変更するにはどうすればよいですか?
- 29. ルートに基づいて高速静的パスを変更するにはどうすればよいですか?
- 30. 内容に基づいてSilverlightアプリケーションのサイズを変更するにはどうすればよいですか?