【问题标题】:find_path doesn't work if environment variable has spaces如果环境变量有空格,find_path 不起作用
【发布时间】:2014-02-17 20:29:58
【问题描述】:

我正在尝试使我的 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>

你有解决这个问题的办法吗?

我正在为 Windows 使用 cmake 2.8.12。

谢谢, 尤利安

【问题讨论】:

    标签: windows cmake


    【解决方案1】:

    我必须承认,我本来希望这也能“正常工作”,但看起来它实际上是 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}
              )
    

    【讨论】:

    • 非常好的调查(+1)。干杯!
    猜你喜欢
    • 2021-11-13
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2020-10-04
    • 2021-03-30
    • 2015-04-30
    相关资源
    最近更新 更多