0

I'm trying to play around with cmake to build a small C++-code.

I do not have yet g++ (I'm testing on a virtualbox OS)

When I call cmake . I get the nasty error messages.

-- The C compiler identification is GNU 4.7.2 **-- The CXX compiler identification is unknown** -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done **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!** 

Basically, this is OK. It says errors occurred, but it says too much than needed. I just want to get a precise and concise message saying "g++ ist not installed. INSTALL it please".

Is there a way to first check if g++ is installed and then give an appropriate message?

2
  • please show the errors you get so we can help Commented Nov 1, 2013 at 23:19
  • So you don't want to fix this error and don't want to remove c++ support from your project, you just want to change error message? I think that error message is quite precise (: Commented Nov 2, 2013 at 5:21

2 Answers 2

0

The output you gave shows that CMake attempting to be helpful to you. If it is too verbose for your taste, perhaps the simplest way to reduce it would be to capture it into a variable, then examine it.

You can save the sample CMake script below as detect_cxx_compiler.cmake, and invoke the script using cmake -P detect_cxx_compiler.cmake. The code is written in a manner intended to be helpful to CMake beginners, not for small size or processing efficiency.

cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR) cmake_policy(VERSION 2.8.5) # This cmake script (when saved as detect_cxx_compiler.cmake) is invoked by: # # cmake -P detect_cxx_compiler.cmake # # It is written for clarity, not brevity. # First make a new directory, so that we don't mess up the current one. execute_process( COMMAND ${CMAKE_COMMAND} -E make_directory detection_area WORKING_DIRECTORY . ) # Here, we generate a key file that CMake needs. execute_process( COMMAND ${CMAKE_COMMAND} -E touch CMakeLists.txt WORKING_DIRECTORY detection_area ) # Have CMake check the basic configuration. The output is # actually in the form that you posted in your question, but # instead of displaying it onscreen, we save it to a variable # so that we can select only parts of it to print later. execute_process( COMMAND ${CMAKE_COMMAND} --check-system-vars OUTPUT_VARIABLE the_output OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY detection_area ) # Eliminate the directory, including all of the files within it that # CMake created. execute_process( COMMAND ${CMAKE_COMMAND} -E remove_directory detection_area WORKING_DIRECTORY . ) # Here, you have the entire message captured as a variable. # Uncomment this next line to convince yourself of this. #message(STATUS "the_output = |${the_output}|.") # Here, we search the message to see if the C++ compiler was found or not, # and print an arbitrary message accordingly. string(FIND "${the_output}" "CMAKE_CXX_COMPILER-NOTFOUND" scan_result) #message(STATUS "scan_result = |${scan_result}|.") if(NOT(-1 EQUAL "${scan_result}")) message(FATAL_ERROR "A C++ compiler was not detected.") endif() message(STATUS "A C++ compiler was detected.") 
Sign up to request clarification or add additional context in comments.

Comments

-2

You should use GCC (Gnu Compiler Collection) frontend. You should install gcc-c++ or something similar package.

1 Comment

Yeah but at this stage I don't want to. The goal is to check first its existence.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.