CMake:运行链接命令出错:%1 不是有效的 Win32 应用程序。

4

我正在尝试使用CMake在64位Windows 8.1上构建NaCl扩展。相同的代码在Ubuntu上没有任何问题。一切都进行得很顺利,直到CMake尝试使用以下命令链接:

cmake -E cmake_link_script link.txt

CMake:错误的运行链接命令:%1 不是有效的 Win32 应用程序

以下是 link.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

这种情况发生在NMake和Unix makefile生成器中(NaCl SDK包含Windows的make.exe)。

如果我手动运行这些命令,它们会成功。可能出了什么问题?


1
win_pnacl 工具是没有扩展名和 .bat 文件的 sh 脚本,所以我认为将 CMAKE_AR 定义为 pnacl_ar.BAT 可能会解决它。但这里还有另一个问题,.bat 文件命令行的最大长度远小于 CreateProcess API 允许的长度。 - eugensk
1个回答

2

就像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 "")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接