在Windows OS中为CMake进行符号链接

时间:2018-10-04 17:28:00

标签: cmake symlink

我为工具链路径创建了指向文件的软符号链接。在CMake文件中,我具有命令CMAKE_FORCE_C_COMPILER,该命令必须采用我的c编译器arm-none-eabi-gcc.exe的路径。但是,当新更新到来时,此编译器的路径总是在变化。因此,我创建了符号链接“ C:/程序文件(x86)/ GNU Tools ARM Embedded / gcc-compiler,而不是路径“ C:/程序文件(x86)/ GNU Tools ARM Embedded / 6 2017-q2-update / bin” / bin”,它指向以前的文件。但是现在符号链接出现了问题,找不到“ arm-none-eabi-gcc.exe”编译器。

因此,此代码将在没有符号链接的情况下工作,并且不会指向编译器。

但是使用符号链接,它将无法正常工作,在构建控制台中它会显示:“ arm-none-eabi-gcc.exe不是这样的文件或目录”

set(ARM_TOOLCHAIN_DIR "C:/Program Files (x86)/GNU Tools ARM Embedded/gcc-compiler/bin")
set(ARM_TOOLCHAIN_SUFFIX ".exe")
MAKE_FORCE_C_COMPILER("${ARM_TOOLCAHIN_DIR}/arm-none-eabi-gcc${ARM_TOOLCAHIN_SUFFIX}" GNU)

1 个答案:

答案 0 :(得分:0)

在Windows中进行符号链接时,该链接指向您的编译器arm-none-eabi-gcc.exe所在的文件。在您的情况下,您进行了符号链接,直接指向完整路径“ C:/ Program Files(x86)/ GNU Tools ARM Embedded / 6 2017-q2-update / bin”中的文件“ / bin”。 当命令CMAKE_FORCE_C_COMPILER使用符号链接作为参数的路径时,Windows将找不到完整路径。

解决方案是使符号链接仅指向上一个文件,而不指向终结文件!因此,不要使符号链接指向* .exe文件所在的最终文件。 Windows无法识别您的路径。

因此,不要使其指向“ / bin”,而应指向“ C:/程序文件(x86)/ GNU Tools ARM Embedded / 6 2017-q2-update /”。

根据您的情况,使用Windows Cmd命令行并键入:

mklink /D "C:/Program Files (x86)/GNU Tools ARM Embedded/gcc-arm-none-eabi/"  "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q2-update"

现在在CMake文件中,您可以使用以下路径访问C编译器:

set(ARM_TOOLCHAIN_DIR "C:/Program Files (x86)/GNU Tools ARM Embedded/gcc-compiler/bin")
MAKE_FORCE_C_COMPILER("${ARM_TOOLCAHIN_DIR}/arm-none-eabi gcc.exe GNU)