CMakeを使用するときにビジュアルスタジオでビルドタイプ(デバッグ/リリース)を検出する

シフトオーバー

デバッグモードまたはリリースモードでビルドするときに、いくつかのカスタムマクロを定義する必要がある小さなゲームエンジンがあります。

これを行うことになっている私のCMakeスクリプトの数行は次のとおりです。

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(OE_BUILD_TYPE_DEFINE "OE_DEBUG")
endif()
    
if (CMAKE_BUILD_TYPE STREQUAL "Release")
    set(OE_BUILD_TYPE_DEFINE "OE_RELEASE")
endif()

if (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
    set(OE_BUILD_TYPE_DEFINE "OE_DEBUG")
endif()

if (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
    set(OE_BUILD_TYPE_DEFINE "OE_RELEASE")
endif()

target_compile_definitions(OverEngine PRIVATE
    "_CRT_SECURE_NO_WARNINGS"
    "GLFW_INCLUDE_NONE"

    PUBLIC
    OE_BUILD_TYPE_DEFINE
)

Linuxを使用して、makeまたはninjaLinuxでうまく機能しますが、VisualStudioを使用しているWindowsでは、CMAKE_BUILD_TYPE変数は常に空です。私はその理由を知っています。VSはmakeninjaジェネレーターとは異なりCMakeを再実行せずにビルドタイプを切り替えることができるためです。

Premakeには、filter問題なく動作するというものがありますが、他の理由で、現在は使用していません。

これを設定するにはどうすればよいですか?

必要に応じて、VisualStudio 201916.7.2とCMake3.18.2を使用しています。

編集:これらの行をこれらの行に置き換えることで修正されました:

target_compile_definitions(OverEngine PRIVATE
    "_CRT_SECURE_NO_WARNINGS"
    "GLFW_INCLUDE_NONE"

    PUBLIC
    $<$<CONFIG:Debug>:OE_DEBUG>
    $<$<CONFIG:Release>:OE_RELEASE>

    $<$<CONFIG:RelWithDebInfo>:OE_DEBUG>
    $<$<CONFIG:MinSizeRel>:OE_RELEASE>
)
どれか

ここでジェネレータ式を使用することをお勧めしますこれらはビルド時に評価されるため、VisualStudioやXcodeなどのマルチ構成ジェネレーターでもビルドタイプが設定されます。

target_compile_definitions(OverEngine
    PRIVATE
      _CRT_SECURE_NO_WARNINGS
      GLFW_INCLUDE_NONE
    PUBLIC
      $<$<CONFIG:Debug>:OE_DEBUG>
      $<$<CONFIG:RelWithDebInfo>:OE_DEBUG>
      $<$<CONFIG:Release>:OE_RELEASE>
      $<$<CONFIG:MinSizeRel>:OE_RELEASE>
)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CMakeプロジェクトをデフォルトでリリースビルドタイプにする

分類Dev

「このアプリはPCで実行できません!」、cordovaアプリビジュアルスタジオ2015をビルドするとき

分類Dev

拡張オブジェクトを含むリストを使用してデータをデータグリッドビューにバインドする方法

分類Dev

Swiftでデバイスまたはシミュレーター用にアプリがビルドされているかどうかを検出する方法

分類Dev

デプロイメントプロジェクトを使用してリリースを作成するときに、ビルドにタグを追加します

分類Dev

アプリがバックグラウンドまたはマルチタスクビューにあるときにiOSビューを変更する

分類Dev

アグリゲートはアグリゲートルックアップサービスを使用できますか、それともビジネスロジックをドメインサービスに含める必要がありますか?

分類Dev

iOSアプリをAppleプロビジョニングポータルに追加せずにデバイスでデバッグできますか?

分類Dev

オブジェクトのリストで高度なデータグリッドビュー(ADGV)を使用する

分類Dev

1つのビジュアルスタジオソリューションに、異なるタイプの2つのプロジェクト(デスクトッププロジェクトとWebプロジェクト)を含めることはできますか?

分類Dev

Cmakeでデバッグビルドとリリースビルド用に異なるインクルードディレクトリを追加しますか?

分類Dev

ビルドタイプ(デバッグとリリース)を使用して、さまざまなスタイルとアプリ名を設定するにはどうすればよいですか?

分類Dev

指定されたすべてのモジュールがロードされる前に、requirejsがユーザーナビゲーションのためにスクリプトエラーを生成するタイミングを検出できますか?

分類Dev

Androidのイメージをサーバーにアップロード、テキストフィールドを含むパスをデータベースに書き込み、リストビューに取得する

分類Dev

ios8でWebビュービデオがフルスクリーンになるタイミングを検出する

分類Dev

Pythonコードをデバッグするときに、VARIABLESセクションのビジュアルスタジオコードでローカル変数の値が「。!toplevel。!calendar。!frame」になります

分類Dev

マルチスレッドUIWPFアプリでライブビジュアルツリーを操作する場合の「呼び出し元のスレッドはこのオブジェクトにアクセスできません」例外

分類Dev

アプリがデバッグ中のときに、Gradleがモジュールをリリースモードでビルドするのはなぜですか

分類Dev

.scriptの使用中にビジュアルスタジオコードでjavascriptインテリセンスを使用する

分類Dev

アプリがバックグラウンドにあるときに、カスタムローカル通知ビューまたはカスタムアラートビューを表示するにはどうすればよいですか?

分類Dev

Android MVP-モデルメソッドにアクセスするためにバックグラウンドサービスでモデル/リポジトリインスタンスを作成するにはどうすればよいですか?

分類Dev

アプリケーションのデバッグバージョンをビルドするときにstoreFileを無視することは可能ですか?

分類Dev

EAは、Javaコードをリバースエンジニアリングするときに、ビジュアルパラダイムなどのパッケージ間の依存関係を示すことができますか?

分類Dev

コンパイルしたスクリプトを32ビットコンピューターに配布しないと仮定すると、64ビットバージョンを使用することのデメリットはありますか?

分類Dev

署名されたAPKを生成せずにリリースビルドタイプをデバッグする

分類Dev

新しいcsprojプロジェクトファイルを使用してdllビルドのデバッグパスをオーバーライドまたはクリアすることは可能ですか?

分類Dev

CMake(CMakeターゲティングビジュアルスタジオ)を使用して同じソリューションでC#およびC ++ / CLRプロジェクトを作成する

分類Dev

シリアルポートでミリ秒ごとにデータパックを読み取るC#ビジュアルスタジオ

分類Dev

QtCreatorとCMake:リリースビルドをデバッグする

Related 関連記事

  1. 1

    CMakeプロジェクトをデフォルトでリリースビルドタイプにする

  2. 2

    「このアプリはPCで実行できません!」、cordovaアプリビジュアルスタジオ2015をビルドするとき

  3. 3

    拡張オブジェクトを含むリストを使用してデータをデータグリッドビューにバインドする方法

  4. 4

    Swiftでデバイスまたはシミュレーター用にアプリがビルドされているかどうかを検出する方法

  5. 5

    デプロイメントプロジェクトを使用してリリースを作成するときに、ビルドにタグを追加します

  6. 6

    アプリがバックグラウンドまたはマルチタスクビューにあるときにiOSビューを変更する

  7. 7

    アグリゲートはアグリゲートルックアップサービスを使用できますか、それともビジネスロジックをドメインサービスに含める必要がありますか?

  8. 8

    iOSアプリをAppleプロビジョニングポータルに追加せずにデバイスでデバッグできますか?

  9. 9

    オブジェクトのリストで高度なデータグリッドビュー(ADGV)を使用する

  10. 10

    1つのビジュアルスタジオソリューションに、異なるタイプの2つのプロジェクト(デスクトッププロジェクトとWebプロジェクト)を含めることはできますか?

  11. 11

    Cmakeでデバッグビルドとリリースビルド用に異なるインクルードディレクトリを追加しますか?

  12. 12

    ビルドタイプ(デバッグとリリース)を使用して、さまざまなスタイルとアプリ名を設定するにはどうすればよいですか?

  13. 13

    指定されたすべてのモジュールがロードされる前に、requirejsがユーザーナビゲーションのためにスクリプトエラーを生成するタイミングを検出できますか?

  14. 14

    Androidのイメージをサーバーにアップロード、テキストフィールドを含むパスをデータベースに書き込み、リストビューに取得する

  15. 15

    ios8でWebビュービデオがフルスクリーンになるタイミングを検出する

  16. 16

    Pythonコードをデバッグするときに、VARIABLESセクションのビジュアルスタジオコードでローカル変数の値が「。!toplevel。!calendar。!frame」になります

  17. 17

    マルチスレッドUIWPFアプリでライブビジュアルツリーを操作する場合の「呼び出し元のスレッドはこのオブジェクトにアクセスできません」例外

  18. 18

    アプリがデバッグ中のときに、Gradleがモジュールをリリースモードでビルドするのはなぜですか

  19. 19

    .scriptの使用中にビジュアルスタジオコードでjavascriptインテリセンスを使用する

  20. 20

    アプリがバックグラウンドにあるときに、カスタムローカル通知ビューまたはカスタムアラートビューを表示するにはどうすればよいですか?

  21. 21

    Android MVP-モデルメソッドにアクセスするためにバックグラウンドサービスでモデル/リポジトリインスタンスを作成するにはどうすればよいですか?

  22. 22

    アプリケーションのデバッグバージョンをビルドするときにstoreFileを無視することは可能ですか?

  23. 23

    EAは、Javaコードをリバースエンジニアリングするときに、ビジュアルパラダイムなどのパッケージ間の依存関係を示すことができますか?

  24. 24

    コンパイルしたスクリプトを32ビットコンピューターに配布しないと仮定すると、64ビットバージョンを使用することのデメリットはありますか?

  25. 25

    署名されたAPKを生成せずにリリースビルドタイプをデバッグする

  26. 26

    新しいcsprojプロジェクトファイルを使用してdllビルドのデバッグパスをオーバーライドまたはクリアすることは可能ですか?

  27. 27

    CMake(CMakeターゲティングビジュアルスタジオ)を使用して同じソリューションでC#およびC ++ / CLRプロジェクトを作成する

  28. 28

    シリアルポートでミリ秒ごとにデータパックを読み取るC#ビジュアルスタジオ

  29. 29

    QtCreatorとCMake:リリースビルドをデバッグする

ホットタグ

アーカイブ