【问题标题】:How to set PATH environment variable in CMake script?如何在 CMake 脚本中设置 PATH 环境变量?
【发布时间】:2011-11-26 22:17:58
【问题描述】:

我想通过 Mingw 编译器构建我的源代码,它没有放在我的系统 PATH 中。 我在脚本的开头尝试了这个:

set(Env{PATH} "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")

还有这个:

set(CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/"   "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_LIBRARY_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PREFIX_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")

第一个变体根本不起作用。建议我不能覆盖 CMake 脚本中环境变量的值。 第二个脚本找到了我的 mingw 编译器,但在运行 gcc 时捕获了错误(找不到 gcc 需要的 libgmp-10.dll)。这是因为 PATH 变量未设置为我的 Mingw。

【问题讨论】:

    标签: cmake


    【解决方案1】:

    CMAKE_SYSTEM_PROGRAM_PATH 不打算修改,使用

    LIST(APPEND CMAKE_PROGRAM_PATH  "c:/MyProject/Tools/mingw/bin/" ...)
    

    【讨论】:

      【解决方案2】:

      您可以将其视为交叉编译工具链,即使您没有像本示例中那样从 Linux 交叉编译到 Windows:

      http://www.vtk.org/Wiki/CmakeMingw

      按照该指南后,在调用 cmake 时在命令行中设置 mingw 工具链:

      ~/src/helloworld/ $ mkdir build
      ~/src/helloworld/ $ cd build
      ~/src/helloworld/build/ $ cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake
      

      如果你经常使用这个,你可以创建一个别名来限制每次你想重新生成 makefile 时输入那个丑陋的 -D:

      alias mingw-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake'
      

      【讨论】:

        【解决方案3】:

        编写一个脚本文件来启动 CMake。

        在 Windows 上制作批处理文件:

        @echo off
        set path=c:\MyProject\Tools\mingw\bin;c:\MyProject\Tools\mingw\msys\1.0\bin
        "C:\Program Files\CMake 2.8\bin\cmake-gui.exe"
        

        在 Linux 上制作一个 bash 脚本:

        export PATH=$PATH:/your/path
        

        【讨论】:

        • 您可以在脚本中使用 setlocal 在批处理文件退出时自动撤消对路径的更改(如果需要)。还有环境变量ProgramFiles(x86)ProgramFiles 应该使用而不是硬编码C:\Program Files
        猜你喜欢
        • 2014-01-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2014-02-01
        • 2016-11-29
        • 2012-10-01
        • 2012-01-12
        相关资源
        最近更新 更多