简体   繁体   English

cmake编译器布尔开关问题

[英]cmake compiler boolean switch issue

I'm pretty new to cmake. 我是cmake的新手。 I'm using the following: 我正在使用以下内容:

cmake -DUSE_OLD_CODE:BOOL=FALSE

This works fine. 这很好。 But when I change the FALSE to TRUE , the compiler seems to think that USE_OLD_CODE is a file and then complains that it cannot find it. 但是,当我将FALSE更改为TRUE ,编译器似乎认为USE_OLD_CODE是一个文件,然后抱怨找不到它。

Below is CMakeLists.txt 以下是CMakeLists.txt

cmake_minimum_required(VERSION 3.5.1) cmake_minimum_required(版本3.5.1)

set(CMAKE_INCLUDE_CURRENT_DIR ON) 设置(CMAKE_INCLUDE_CURRENT_DIR ON)

add_compile_options(-std=c++11 /W4 /wd"4127" /wd"4201" /MP) add_compile_options(-std = c ++ 11 / W4 / wd“ 4127” / wd“ 4201” / MP)

IF(USE_OLD_CODE) add_compile_options(/D "USE_OLD_CODE") ENDIF(USE_OLD_CODE) IF(USE_OLD_CODE)add_compile_options(/ D“ USE_OLD_CODE”)ENDIF(USE_OLD_CODE)

set( SOURCES "main.cpp" ) 设置(来源“ main.cpp”)

set (OLD_CODE_SOURCES "OldCode.cpp" ) 设置(OLD_CODE_SOURCES“ OldCode.cpp”)

set (NEW_CODE_SOURCES "NewCode.cpp" ) 设置(NEW_CODE_SOURCES“ NewCode.cpp”)

IF(USE_OLD_CODE) set (SOURCES ${SOURCES} "${OLD_CODE_SOURCES}") ELSE(USE_OLD_CODE) set (SOURCES ${SOURCES} "${NEW_CODE_SOURCES}") ENDIF(USE_OLD_CODE) IF(USE_OLD_CODE)设置(SOURCES $ {SOURCES}“ $ {OLD_CODE_SOURCES}”)ELSE(USE_OLD_CODE)设置(SOURCES $ {SOURCES}“ $ {NEW_CODE_SOURCES}”)ENDIF(USE_OLD_CODE)

IF(WIN32) add_executable(${EXECUTABLE} WIN32 ${SOURCES}) ELSEIF(UNIX) add_executable(${EXECUTABLE} ${SOURCES}) ENDIF(WIN32) IF(WIN32)add_executable($ {EXECUTABLE} WIN32 $ {SOURCES})ELSEIF(UNIX)add_executable($ {EXECUTABLE} $ {SOURCES})ENDIF(WIN32)

Any ideas what I am doing wrong? 有什么想法我做错了吗?

thanks 谢谢

james 詹姆士

要启用,您可以使用-DUSE_OLD_CODE:BOOL = ON;要禁用USE_OLD_CODE,请使用-DUSE_OLD_CODE:BOOL = OFF

shouldn't it be add_compile_options("/DUSE_OLD_CODE") ? 不应该是add_compile_options("/DUSE_OLD_CODE")吗?

msvc doesn't expect a space after "/D" IIRC. msvc不会在“ / D” IIRC之后出现空格。

https://msdn.microsoft.com/en-us/library/aa235412(v=vs.60).aspx https://msdn.microsoft.com/zh-CN/library/aa235412(v=vs.60).aspx

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM