Michael Biebl wrote:
what's the the correct way to do the following:
1) Compile and install a binary foo to /usr/bin/foo
2) Create a link /usr/bin/bar -> /usr/bin/foo
3) On "make uninstall" remove /usr/bin/foo and /usr/bin/bar

For 1+2, I used
SET_TARGET_PROPERTIES(foo PROPERTIES POST_INSTALL_SCRIPT make_links.cmake)

In CMake 2.4 you can do

ADD_EXECUTABLE(foo foo1.cxx ...)
INSTALL(TARGETS foo DESTINATION bin)
INSTALL(CODE "
  EXECUTE_PROCESS(
    COMMAND \${CMAKE_COMMAND} -E remove \${CMAKE_INSTALL_PREFIX}/bin/bar
COMMAND \${CMAKE_COMMAND} -E create_symlink foo \${CMAKE_INSTALL_PREFIX}/bin/bar
    )
LIST(APPEND CMAKE_INSTALL_MANIFEST_FILES \${CMAKE_INSTALL_PREFIX}/bin/bar)
")

The INSTALL(CODE ...) command puts code directly into the install script. Note that by escaping the dollar signs '\$' they are placed literally into the script which will evaluate the variables at install time. The CMAKE_INSTALL_MANIFEST_FILES variable maintains a list of installed files.

Use this with care...the code will still try to run on Windows platforms where there are no symlinks and the executables have a .exe extension.

-Brad
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to