Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting default compiler in CMake

I'm using CMake version 2.8 on WinXP SP3. Whenever i run my CMakeLists script by default CMake use Visual Studio 10 compiler. I've tried to do:

SET( CMAKE_CXX_COMPILER "C:/MinGW/bin/g++" ) 

without success. How can i set MinGW as my default compiler so that i do not have to worry about setting compiler in the CMakeLists?

like image 247
Amani Avatar asked Aug 16 '11 16:08

Amani


People also ask

How can I change CMake compiler?

If you want, e.g., to use clang instead of defaulted gcc , then either: Pass -DCMAKE_C_COMPILER=<compiler> to cmake when configure the project. That way CMake will use this compiler instead of default one and on the project() call it will adjust all flags for the specified compiler.

What is CMake default compiler?

As is already written in the answer to the other question, CMake prefers the generic compiler names cc and c++ when searching for the C and C++ compilers. These probably refer to GNU version 4.1 compilers on your system.

How does CMake know which compiler to use?

As the linker is invoked by the compiler driver, CMake needs a way to determine which compiler to use to invoke the linker. This is calculated by the LANGUAGE of source files in the target, and in the case of static libraries, the language of the dependent libraries.

How do I change my default CMake generator?

With CMake version 3.15 or later, you can set the CMAKE_GENERATOR environment variable to specify the default generator to be used on your system.


2 Answers

Under Windows CMake uses the newest Visual Studio installation as default generator, unless the generator is explicitly specified upon invoking CMake. This behavior is hard coded and cannot be changed.

As a work-around you can use a batch wrapper script titled cmake.bat with the following contents:

@cmake.exe -G "MinGW Makefiles" %* 

The script should be placed in a directory on the system PATH and should take precedence over the CMake executable cmake.exe.

The script invokes cmake.exe with MinGW as a generator and forwards all other parameters to it.

like image 128
sakra Avatar answered Sep 24 '22 12:09

sakra


You only have to set the toolchain/output format once, typically you'd do this upon running cmake for the first time:

cmake -G "MinGW Makefiles" . 

Instead of the dot you can use your own parameters (if any) and/or the path to the source.

As an alternative, especially when you're new to CMake, use the GUI version under windows (run cmake-gui without parameters instead of cmake).

Once opened, set your paths and click on "Configure". If there's no compiler set, it will ask you to pick one (otherwise you have to clear the cache to make it reappear).

Updated configuration values will appear in red and it will also allow you to select files and paths using the common Windows dialog boxes.

Once configuration is complete and without errors you can hit "generate" to create your makefiles or project files. To update these later on, you can use cmake-gui again or just use the usual command line version cmake.

like image 30
Mario Avatar answered Sep 21 '22 12:09

Mario