cant compler find,CMake错误在CMakeLists.txt:30(项目):没有CMAKE_C_COMPILER可以找到

I'm trying make a Visual Studio solution with Cmake to compile the latest version of aseprite and the cmake keeps giving me the :

No CMAKE_C_COMPILER could be found.

No CMAKE_CXX_COMPILER could be found.

I've already downloaded gcc and i'm using visual studio 2015.

I'm following this tutorial /

I've been searching for about 3 hours and no solution on internet fitted.

解决方案

Those error messages

CMake Error at ... (project):

No CMAKE_C_COMPILER could be found.

-- Configuring incomplete, errors occurred!

See also ".../CMakeFiles/CMakeOutput.log".

See also ".../CMakeFiles/CMakeError.log".

or

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.

Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

...

-- Configuring incomplete, errors occurred!

just mean that CMake was unable to find your C/CXX compiler to compile a simple test program (one of the first things CMake tries while detecting your build environment).

The steps to find your problem are dependent on the build environment you want to generate. The following tutorials are a collection of answers here on StackOverflow and some of my own experiences with CMake on MS Windows 7/8.

Preconditions

You have installed the compiler/IDE and it was able to once compile any other program (directly without CMake)

You have the latest CMake version

You have access rights on the drive you want CMake to generate your build environment

You have a clean build directory (because CMake does cache things from the last try) e.g. as sub-directory of your source tree

Windows cmd.exe

> rmdir /s /q VS2015

> mkdir VS2015

> cd VS2015

Bash shell

$ rm -rf MSYS

$ mkdir MSYS

$ cd MSYS

and make sure your command shell points to your newly created binary output directory.

General things you can/should try

Is CMake able find and run with any/your default compiler? Run without giving a generator

> cmake ..

-- Building for: Visual Studio 14 2015

...

Perfect if it correctly determined the generator to use - like here Visual Studio 14 2015

What was it that actually failed?

In the previous build output directory look at CMakeFiles\CMakeError.log for any error message that make sense to you or try to open/compile the test project generated at CMakeFiles\[Version]\CompilerIdC|CompilerIdCXX directly from the command line (as found in the error log).

CMake can't find Visual Studio

Try to select the correct generator version

> cmake --help

> cmake -G "Visual Studio 14 2015" ..

If that doesn't help try to set the VS environment variables first (the path could vary)

> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"

> cmake ..

or use the Developer Command Prompt for VS2015 short-cut in your Windows Start Menu under All Programs/Visual Studio 2015/Visual Studio Tools (thanks at @Antwane for the hint)

Background: CMake does support all Visual Studio releases and flavors (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, ...). To determine the location of the compiler it uses a combination of searching the registry (e.g. at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), system environment variables and - if none of the others did come up with something - plainly try to call the compiler.

CMake can't find GCC (MinGW/MSys)

You start the MSys bash shell with msys.bat and just try to directly call gcc

$ gcc

gcc.exe: fatal error: no input files

compilation terminated.

Here it did find gcc and is complaining that I didn't gave it any parameters to work with.

So the following should work:

$ cmake -G "MSYS Makefiles" ..

-- The CXX compiler identification is GNU 4.8.1

...

$ make

If GCC was not found call export PATH=... to add your compilers path (see How to set PATH environment variable in CMake script?) and try again.

If it's still not working, try to set the CXX compiler path directly by exporting it (path may vary)

$ export CC=/c/MinGW/bin/gcc.exe

$ export CXX=/c/MinGW/bin/g++.exe

$ cmake -G "MinGW Makefiles" ..

-- The CXX compiler identification is GNU 4.8.1

...

$ mingw32-make

Note: When using the "MinGW Makefiles" generator you have to use the mingw32-make program distributed with MinGW

Still not working? That's weird. Please make sure that the compiler is there and it has executable rights (see also preconditions chapter above).

Otherwise the last resort of CMake is to not try any compiler search itself and set CMake's internal variables directly by

$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..

Alternatively those variables can also be set via cmake-gui.exe on Windows. See Cmake cannot find compiler

Background: Much the same as with Visual Studio. CMake supports all sorts of GCC flavors. It searches the environment variables (CC, CXX, ...) or simply tries to call the compiler. In addition it will detect any prefixes (when cross-compiling) and tries to add it to all binutils of the GNU compiler toolchain (ar, ranlib, strip, ld, nm, objdump, objcopy).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值