デバッグモードまたはリリースモードでビルドするときに、いくつかのカスタムマクロを定義する必要がある小さなゲームエンジンがあります。
これを行うことになっている私の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
またはninja
Linuxでうまく機能しますが、VisualStudioを使用しているWindowsでは、CMAKE_BUILD_TYPE
変数は常に空です。私はその理由を知っています。VSはmake
、ninja
ジェネレーターとは異なり、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]
コメントを追加