我想在cmake中定義幾個自定義#define
,但由於某些原因,VS將它們識別爲已定義的宏,但檢查是否已定義#ifdef
不起作用。VS 2017 CMake不識別宏
例子:
的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})
更新的CMakeLists.txt
注:問題仍然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