cmakeでカスタム#define
を定義しようとしていますが、何らかの理由でVSが定義されたマクロとして認識しますが、定義されているかどうかを確認すると、#ifdef
は機能しません。VS 2017 CMakeがマクロを認識しない
例:
CMakeLists.txt
CMakeLists.txt更新cmake_minimum_required(VERSION 3.7)
project(StormEngine VERSION "0.0.0")
set(CMAKE_CXX_STANDARD 17)
if (WIN32)
add_definitions(-DWIN32_BUILD)
elseif(WIN64)
add_definitions(-DWIN64_BUILD)
endif()
if (WIN32 OR WIN64)
add_definitions(-DWIN_BUILD)
endif()
set(SOURCE_FILES main.cpp)
add_executable(StormEngine ${SOURCE_FILES})
注:問題はまだ変更は以下の見た後もpresists。
cmake_minimum_required(VERSION 3.7)
project(StormEngine VERSION "0.0.0")
set(CMAKE_CXX_STANDARD 17)
if (WIN32)
add_definitions(-DWIN32_BUILD)
add_definitions(-DWIN_BUILD)
endif()
set(SOURCE_FILES main.cpp)
add_executable(StormEngine ${SOURCE_FILES})
main.cppに
#include <iostream>
int main()
{
std::cout << "main called..." << std::endl;
#ifdef WIN_BUILD
std::cout << "Window Build" << std::endl;
#endif
return 0;
}
出力は次のようになります。
main called...
Window Build
実際の出力:
main called...
私の悪いことだった 'Window Build' – Mukul215
の後に' ''が不足しているようです。実際のコードにはありません。コピー/ペーストの代わりに例を打ち出しました。 – Matthew
@ Someprogrammerdude私はちょうどチュートリアルに従ったhttps://blogs.msdn.microsoft.com/vcblog/2016/10/05/cmake-support-in-visual-studio/ – Matthew