Создание символических ссылок в ОС Windows для CMake - PullRequest
0 голосов
/ 04 октября 2018

Я создал мягкие символические ссылки на файлы для моего пути к инструментам.В файле CMake у меня есть команда CMAKE_FORCE_C_COMPILER, которая должна указывать путь к моему компилятору c arm-none-eabi-gcc.exe.Но путь к этим компиляторам всегда меняется, когда приходят новые обновления.Поэтому вместо пути "C: / Program Files (x86) / GNU Tools ARM Embedded / 6 2017-q2-update / bin" я создал символическую ссылку "C: / Program Files (x86) / GNU Tools ARM Embedded / gcc-compiler/ 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 голосов
/ 05 ноября 2018

При создании символических ссылок в Windows, они указывают на файл, в котором находится ваш компилятор arm-none-eabi-gcc.exe.В вашем случае вы сделали символическую ссылку, указывающую на файл "/ bin" в полном пути "C: / Program Files (x86) / GNU Tools ARM Embedded / 6 2017-q2-update / bin".Когда команда CMAKE_FORCE_C_COMPILER принимает ваш путь с символической ссылкой в ​​качестве параметра, Windows не найдет полный путь.

Решение состоит в том, чтобы создать символическую ссылку, указывающую только на предыдущий файл, а не на файл финала!Так что NOT сделайте так, чтобы символическая ссылка указывала на конечный файл, где находится ваш * .exe файл.Windows не распознает ваш путь.

Так что не указывайте "/ bin", а здесь "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)
...