我正在维护this GitHub repo - 一个简单的C项目,其中包含用于构建配置的CMake。它建立在Linux和MacOS之上。
现在我想开始在Windows上使用AppVeyor为我的一个分支机构构建测试(在使用Travis的Linux上,但这只是工作,所以没有任何问题)。我根据我在另一个项目中看到的类似文件,设置了一个appveyor帐户,编辑了设置,并在我要测试的分支(appveyor.yml
)上创建了drop_platform_spec
file。
我没有Windows机器,我可以自己测试构建,让事情变得更加困难(我猜也许是蛮干的)。
无论如何,构建确实发生了,但失败有两个原因:
sh.exe
位于构建路径中构建控制台输出附在下面。
我的问题:我该如何解决这个问题?特别是,我应该手动将C编译器设置为某个路径,如果是,那么路径是什么?
构建控制台输出:
git clone -q --depth=1 --branch=drop_platform_spec https://github.com/eyalroz/tpch-dbgen.git C:\projects\tpch-dbgen
git checkout -qf 4607da63ecaead909c4ba380c5097495655c592e
Running Install scripts
set "PATH=%mingw_bin%;%PATH%"
cmake -G "MinGW Makefiles" . && mingw32-make
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.10/Modules/CMakeMinGWFindMake.cmake:12 (message):
sh.exe was found in your PATH, here:
C:/Program Files/Git/usr/bin/sh.exe
For MinGW make to work correctly sh.exe must NOT be in your path.
Run cmake from a shell that does not have sh.exe in your PATH.
If you want to use a UNIX shell, then use MSYS Makefiles.
Call Stack (most recent call first):
CMakeLists.txt:7 (project)
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
Command exited with code 1
注意:此问题描述了一个不兼容的sh和make情况。我不认为这就是我所拥有的,所以这不是一个骗局,但如果你认为这与我的情况有关,请在这里解释,而不是标记一个骗局。
答案 0 :(得分:1)
将我的评论转化为答案
要隐藏来自CMake的PATH
环境中的内容,您可以使用CMAKE_IGNORE_PATH
。
所以我认为它也可以在这里工作(隐藏PATH中的所有shell)。但是,如果您的编译器(或任何其他可执行文件)位于同一路径中,它将无法工作:
cmake -DCMAKE_IGNORE_PATH="C:/Program Files/Git/usr/bin" ..
<强>参考强>
答案 1 :(得分:0)
请检查https://github.com/eyalroz/tpch-dbgen/pull/22/files,这是非常自我描述的。主要与Windows命令行语法有关,例如set path
和echo %variable%
命令行语法。这不是弗洛里安所写的替代答案,而是补充。
附注:没有Windows机器不应阻止您进行交互式调试,请参阅https://www.appveyor.com/docs/how-to/rdp-to-build-worker/