Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get CLion to run an install target

Tags:

cmake

clion

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.

like image 441
BahmanR Avatar asked Nov 18 '15 19:11

BahmanR


People also ask

How do you set project target in CLion?

Click File | Open, point CLion to compile_commands. json, and choose Open as Project. to add a new target. This dialog is also accessible from the Custom Build Application editor.

Does CLion install CMake?

CMake itself is bundled in CLion, so you don't need to install it separately unless you decide to use a custom version. Apart from CMake, CLion supports Makefile, compilation database, and Gradle projects. Creating new projects of these types in CLion is not supported currently. Refer to Project Formats for details.


1 Answers

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}")
like image 81
maddouri Avatar answered Sep 25 '22 02:09

maddouri