20

I'm evaluating CLion 1.2.1 on an existing project which is already using CMake. The project is made up of a few library modules and a single executable.

I have an install target which I use to collect the executable and a configuration file together in a bin folder for debugging:

...
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_BINARY_DIR}/bin/)
install(FILES config.xml DESTINATION ${CMAKE_BINARY_DIR}/bin/)

When building on the command line I'd just run:

make install

which as expected builds the binaries and if successful then runs the above install commands.

My problem is that I can't get CLion to run the 'install' target. I expected to be able to create a new Run/Debug configuration but the Target: dropdown only contains those targets added using add_executable() and add_library().

I also tried adding 'install' to the Build options in the Settings dialog. That however runs install for every target now including 'clean' which is not right.

maddouri
  • 3,737
  • 5
  • 29
  • 51
BahmanR
  • 203
  • 1
  • 2
  • 4

3 Answers3

29

UPDATE: As of 2018.1 EAP, build 181.3741.16, CLion supports running cmake install if your project defines install targets:


(source: cloudfront.net)


Original Answer:

I don't think that CLion implements this feature yet. However, you can work around this limitation by adding a CMake "custom target" (using add_custom_target()) that will execute the make install command:

add_custom_target(install_${PROJECT_NAME}
                  $(MAKE) install
                  DEPENDS ${PROJECT_NAME}
                  COMMENT "Installing ${PROJECT_NAME}")

Now, all you have to do is "build" the install_YOUR_PROJECT_NAME target from the "targets" menu in CLion.

Update:

A more cross-platform technique might be the following:

add_custom_target(install_${PROJECT_NAME}
                  "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target install
                  DEPENDS ${PROJECT_NAME}
                  COMMENT "Installing ${PROJECT_NAME}")
Glorfindel
  • 21,988
  • 13
  • 81
  • 109
maddouri
  • 3,737
  • 5
  • 29
  • 51
1

@maddouri 's comment already addresses your question. Alternatively, Under Settings -> Build, Execution, Deployment -> CMake, you can also set Build Option for Debug or Release build type to something like -j 2 install. With this setting, whenever CLion builds the code, it will install your targets, too!

Ahmad S
  • 68
  • 6
0

If you want the installation to automatically precede the launch, open the Run | Edit Configurations dialog, choose the desired Run/Debug configuration, press App general add in the Before launch section, and choose Install from the drop-down list:

1

Time Killer
  • 693
  • 8
  • 21