windows – 如果环境变量有空格,则find_path不起作用

我正在尝试让我的cmake项目自动编译,但是当我的路径包含空格时我遇到了一些困难.

这是我的命令行(windows命令提示符)

C:\Code\codetrainerplugins-build>type %CODETRAINER_PATH%\include\common\exportapi.h
#pragma once
... the file is found ...

这是我的CMakeLists.txt文件

CMAKE_MINIMUM_required (VERSION 2.6)
PROJECT (CodeTrainerPlugins)

MESSAGE("$ENV{CODETRAINER_PATH}")

FIND_PATH   (CODETRAINER_FRAMEWORK_PATH 
                NAMES include/common/ExportApi.h
                PATHS
                    ENV CODETRAINER_PATH
            )


if (CODETRAINER_FRAMEWORK_PATH)
    MESSAGE(STATUS "CodeTrainer Framework found at: ${CODETRAINER_FRAMEWORK_PATH}")
else()
    MESSAGE(FATAL_ERROR "CodeTrainer Framework not found")
endif()

ADD_subdirectory(function)
ADD_subdirectory(test)

这是CODETRAINER_PATH变量包含空格时的输出(请参阅路径中的空格):

C:\Code\codetrainerplugins-build>echo %CODETRAINER_PATH%
"C:\Code Trainer"
C:\Code\codetrainerplugins-build>
C:\Code\codetrainerplugins-build>cmake ..\codetrainerplugins
-- Building for: Visual Studio 10
"C:\Code Trainer"
CMake Error at CMakeLists.txt:16 (MESSAGE):
  CodeTrainer Framework not found


-- Configuring incomplete,errors occurred!
See also "C:/Code/codetrainerplugins-build/CMakeFiles/CMakeOutput.log".

C:\Code\codetrainerplugins-build>

但是当使用的路径没有空格时,一切正常(见下文):

C:\Code\codetrainerplugins-build>echo %CODETRAINER_PATH%
C:\CodeTrainer

C:\Code\codetrainerplugins-build>cmake ..\codetrainerplugins
C:\CodeTrainer
-- CodeTrainer Framework found at: C:/CodeTrainer
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Code/codetrainerplugins-build

C:\Code\codetrainerplugins-build>

您对如何解决此问题有任何解决方案吗?

我正在使用cmake 2.8.12 for Windows.

谢谢,
尤利安

我必须承认,我本来期望这也“正常工作”,但它看起来实际上是CODETRAINER_PATH中的引号,因为它有空格是导致问题的原因.

在定义环境变量CODETRAINER_PATH时要么不添加引号,要么修改CMake代码,如下所示:

STRING(REPLACE "\"" "" CODETRAINER_PATH_WITHOUT_QUOTES $ENV{CODETRAINER_PATH})
FIND_PATH(CODETRAINER_FRAMEWORK_PATH 
          NAMES include/common/ExportApi.h
          PATHS ${CODETRAINER_PATH_WITHOUT_QUOTES}
          )

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...