Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure Eclipse CDT for cmake?

How to configure Eclipse "Helios" with plugin CDT for cmake?

cmake all  CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not    exist. 

Eclipse always wants to use 'all' option and I don't know how to stop its to not use it.

I've seen that in "Build behavior" section, in "Preference" there have been 'all' option. I erased this, but it still works wrong (this same error).

like image 818
kspacja Avatar asked Feb 26 '12 14:02

kspacja


People also ask

Does eclipse work with CMake?

The CMake tools is a generator of build systems. It can create projects to different kinds of IDEs like eclipse and visual studio, and depend on a selected IDE; it makes appropriate project files.

How do I open a CMake file in eclipse?

In Eclipse, select File > New > C Project. Enter a project name and choose the root of your source tree as the project location. Select Executable > Empty Project as the project type, and accept the default toolchain. Click Finish, and you have a CMake project in your workspace.

Does CMake work for C++?

CMake is a collection of open-source and cross-platform tools used to build and distribute software. In recent years it has become a de-facto standard for C and C++ applications, so the time has come for a lightweight introductory article on the subject.


2 Answers

In Eclipse-CDT you do not create cmake projects but you import cmake projects. This is what you should do:

  1. Say the source of your CMake project named "Planner" is located in D:/javaworkspace/src/Planner

  2. Create a folder (the folders NEED to be parallel to each other): D:/javaworkspace/build/Planner

  3. Go to the folder D:/javaworkspace/build/Planner and run CMake using the Eclipse generator:

     cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles" 

    This will generate the make files for your Planner project.

  4. To import this in Eclipse do the following:

    File -> Import -> C/C++ -> Existing code as Makefile project

    and select D:/javaworkspace/build/Planner (the build output folder with the make files) as the "Existing Code location"

However, looking at your paths it seems to me that you are working on Windows. In windows CMake can generate Visual Studio projects. If you want to use CMake I suggest first creating a "hello world" project using CMake (remember, Eclipse does not create CMake projects, you have to create a CMakeLists.txt file by hand)

like image 95
gvd Avatar answered Sep 23 '22 16:09

gvd


What worked best for me is cmake4eclipse. It's a plugin that is available via the marketplace.

Portions from the cmake4eclipse help text:

CMake for CDT requires an existing C/C++ project to work with. It allows to use cmake as the generator for the makefiles instead of the generator built-in to CDT. See Enabling CMake buildscript generation for details.

To set up a new project with existing source code, please follow these steps:

  • Check out your source code.
  • Open the new C/C++ project wizard ("File" => "New" => "C Project" or "File" => "New" => "C++ Project").
    • Make sure the project location points to root directory of your checked out files
    • For the project type, select Executable. You may also select Shared Library or Static Library, it does not matter, that information comes from your CMakeLists.txt, but CDT requires it. Do not select Makefile project here!
    • Finish project creation.
  • Open the "Project Properties" dialog.
    • Select the "C/C++ Build" node and the "Builder Settings" tab and make sure Generate Makefiles automatically is checked.
    • Select the "Tool Chain Editor" node and set "CMake Make Builder" as the current builder.
    • If your top level CMakeLists.txt does not reside in the root directory of your checked out files, select the "C/C++ General" "Path and Symbols" node and the "Source Location" tab. Then adjust the source folder to point to the directory containing your CMakeLists.txt file. This will tell the CDT indexer to scan the header files in your project.
  • Pro Tip: Add a CMakeLists.txt file in the root directory of your checked out files, if you miss the Binaries or Archives folder in the C/C++ Projects View. Build the project. This will invoke cmake to generate the build scripts, if necessary, and then will invoke make.

Do not try to import an Eclipse project that you created manually using cmake -G Eclipse CDT4 - Unix Makefiles, as that will put you on the classic Makefile project route!

The best thing about this plugin is that it can use the cmake exported compiler options to index your project.

  • Open the "Project Properties" dialog.
    • Select the "C/C++ General" node and the "Preprocessor Includes Paths, Macros etc." tab. Select "CMAKE_EXPORT_COMPILE_COMMANDS Parser" and move it to the top of the list.
    • Hit "OK" to close the dialog. Make sure to trigger one build now and recreate the index.

Provider tab

This fixed all the nasty indexer problems that were annoying me when I only used "CDT GCC Build-In Compiler Settings" and added stuff like "-std=c++14" to "Command to get the compiler specs".

like image 21
Martin Gerhardy Avatar answered Sep 23 '22 16:09

Martin Gerhardy