CMake: ошибка при выполнении команды ссылки: %1 не является допустимым приложением Win32

Я пытаюсь создать расширение NaCl для 64-разрядной версии Windows 8.1 с помощью CMake. Тот же код работает на Ubuntu без проблем. Все идет хорошо, пока CMake не попытается связать с этой командой:

cmake -E cmake_link_script link.txt

CMake: ошибка при выполнении команды ссылки: %1 не является допустимым приложением Win32

Ссылка.txt выглядит следующим образом:

C:/nacl_sdk/pepper_39/toolchain/win_pnacl/bin/pnacl-ar cr libfoo.a CMakeFiles/foo.dir/Foo.cc.o
C:/nacl_sdk/pepper_39/toolchain/win_pnacl/bin/pnacl-ranlib libfoo.a

Это происходит как с генераторами make-файлов NMake, так и с Unix (NaCl SDK содержит make.exe для Windows).

Если я запускаю эти команды вручную, они преуспевают. Что здесь может быть не так?


person user2061057    schedule 05.02.2015    source источник
comment
Инструменты win_pnacl представляют собой скрипты sh ​​без расширения и файлы .bat, поэтому я думаю, что определение CMAKE_AR как pnacl_ar.BAT может это исправить. Но вот еще одна проблема, максимальная длина командной строки .bat файла намного меньше разрешенной API CreateProcess.   -  person eugensk    schedule 13.04.2015


Ответы (1)


Точно так же, как eugensk00 предложил добавить «.bat» в определения набора инструментов, кажется, работает. Однако необходимо добавить как для ar, так и для ranlib:

set(CMAKE_AR                    "${PLATFORM_PREFIX}/bin/pnacl-ar.bat" CACHE STRING "")
set(CMAKE_RANLIB                "${PLATFORM_PREFIX}/bin/pnacl-ranlib.bat" CACHE STRING "")
person orcy    schedule 27.07.2015