在 Windows OS 中为 CMake 创建符号链接

Making Symbolic links in Windows OS for CMake

我为我的工具链路径的文件创建了软符号 links。在 CMake 文件中,我有命令 CMAKE_FORCE_C_COMPILER,它必须采用我的 c 编译器 arm-none-eabi-gcc.exe 的路径。但是当新的更新到来时,这个编译器的路径总是在改变。所以我创建了符号 link "C:/Program Files (x86)/GNU Tools ARM Embedded/gcc-compiler/bin" 而不是路径 "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q2-update/bin",它指向以前 file.But 问题现在是符号 link,它找不到 "arm-none-eabi-gcc.exe"编译器。

因此此代码将在没有符号 link 和编译器的直接路径的情况下工作。

但是对于符号 link,它不会工作,在构建控制台中它说:"arm-none-eabi-gcc.exe Not such a file or directory"

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)

在 Windows 中创建符号 links 时,它指向您拥有编译器 arm-none-eabi-gcc.exe 的文件。在你的例子中,你做了符号 link 直接指向完整路径 "C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q2-update/bin" 中的文件“/bin”。 当命令 CMAKE_FORCE_C_COMPILER 将您的路径与符号 link 作为参数时,Windows 将找不到完整路径。

解决办法是让符号link只指向前一个文件,而不是最后一个文件!所以 NOT 使符号 link 指向 *.exe 文件所在的最终文件。 Windows 将无法识别您的路径。

所以不要让它指向“/b​​in”,而是指向这里"C:/Program Files (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)