我有PATHVisual Studio 2017 RTM中的Mingw64 GCC 6.3.0(总是在)和Visual C++编译工具(不在PATH).
如果我运行cmake . -G "MinGW Makefiles",将选择GCC 6.3.0.
如果我运行cmake . -G "Ninja",将选择GCC 6.3.0.
我的Visual C++编译工具不是标准的,我只保留我需要的部分并删除其余部分(如MSBuild,IDE等).我使用自己的批处理脚本来设置PATH,INCLUDE并且LIB(工作得很好).
如果我运行此批处理脚本并运行cmake .,将选择MSVC并使用NMake构建.
在相同的环境下,cmake . -G "Ninja"选择GCC 6.3.0而不是MSVC.
所以我的问题是,如何告诉CMake我想要使用MSVC + Ninja而不是GCC + Ninja PATH?我应该设置的任何环境变量?
您也可以使用反转方法并排除所有不需要的编译器CMAKE_IGNORE_PATH.它需要忽略的路径列表,但要注意它必须是精确的字符串匹配.优点是您可以直接从命令行声明它们.
所以我所做的就是从编译器中找到路径,但是"不要被带入" CMAKE_IGNORE_PATH.
在我的系统中,我实际上有三个GCC编译器PATH(只需确保从每个尝试的空二进制输出目录开始):
> cmake -G"Ninja" ..
...
-- Check for working C compiler: C:/MinGW/bin/cc.exe
...
Run Code Online (Sandbox Code Playgroud)
> cmake -DCMAKE_IGNORE_PATH="C:/MinGW/bin" -G"Ninja" ..
...
-- Check for working C compiler: C:/Strawberry/c/bin/gcc.exe
...
Run Code Online (Sandbox Code Playgroud)
> cmake -DCMAKE_IGNORE_PATH="C:/MinGW/bin;C:/Strawberry/c/bin" -G"Ninja" ..
...
-- Check for working C compiler: C:/Program Files (x86)/LLVM/bin/clang.exe
...
Run Code Online (Sandbox Code Playgroud)
> cmake -DCMAKE_IGNORE_PATH="C:/MinGW/bin;C:/Strawberry/c/bin;C:/Program Files (x86)/LLVM/bin" -G"Ninja" ..
...
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |