How do I write CMake install for a library?

cnd picture cnd · Jun 7, 2012 · Viewed 9.8k times · Source

Here is my try:

IF (NOT WIN32)
  #INSTALL_TARGETS(${LIB_INSTALL_DIR} ${tinyscheme-nix_BINARY_DIR}/libtinyscheme.so)
  #INSTALL(TARGETS ${tinyscheme-nix_BINARY_DIR}/libtinyscheme.so DESTINATION ${LIB_INSTALL_DIR})
ENDIF()

Both variants are wrong. I want to move libtinyscheme.so from ${tinyscheme-nix_BINARY_DIR} to /lib or /lib64. Basically, I think ${LIB_INSTALL_DIR} handles it.

How can I make it? Where is my mistake?

Answer

Fraser picture Fraser · Jun 7, 2012

You probably want the FILES version of install here instead of the TARGETS version.

The TARGETS version of install is used for actual CMake targets which have been added using e.g. add_library. In this case, you would refer to the target by its name assigned during the add_library command, rather than its full path.

So replacing TARGETS with FILES in your second command would be the way to go here I think.

For full details on the install command, run:

cmake --help-command install