вторник, 5 апреля 2011 г.

[Часть 2] Cmake: автоматизированная сборка и установка

Теперь рассмотрим процесс подготовки Cmake для make install.

Итак, имеем конкретный CMakeLists для сборки определенного проекта. Далее все просто и быстро
if (UNIX)
linux_install(${PROJECT_NAME})

# возможно проекту требуются какие то внешние либы
install(FILES $ENV{SOME_ROOT}/lib/release/libsome.so.1.0
DESTINATION ${PROJECT_NAME}/lib RENAME libsome.so.1)
endif()

Далее где то должна быть определена используемая функция
function(linux_install PROJECT_NAME)
set_target_properties(${PROJECT_NAME} PROPERTIES RESOURCE ${PROJECT_NAME}_ETC_FILES)

install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${PROJECT_NAME}/bin
RESOURCE DESTINATION ${PROJECT_NAME}/etc
)
install(PROGRAMS ${${PROJECT_NAME}_BIN_FILES} DESTINATION ${PROJECT_NAME}/bin)
install(FILES ${${PROJECT_NAME}_LIB_FILES} DESTINATION ${PROJECT_NAME}/lib})
endfunction(linux_install)

Здесь мы как раз и использовали ранее полученные переменные имя_проекта_BIN_FILES, имя_проекта_ETC_FILES, имя_проекта_LIB_FILES

Например если у нас имеется в наличии несколько разных тестов, для разные подпроектов, то неплохо бы их собрать вместе для тестера

function(linux_install_test PROJECT_NAME PROJECT_DIR)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${PROJECT_DIR}/bin)

install(PROGRAMS ${${PROJECT_DIR}_BIN_FILES} DESTINATION ${PROJECT_DIR}/bin)
install(FILES ${${PROJECT_DIR}_ETC_FILES} DESTINATION ${PROJECT_DIR}/etc})
install(FILES ${${PROJECT_DIR}_LIB_FILES} DESTINATION ${PROJECT_DIR}/lib})
endfunction(linux_install_test)

Где PROJECT_DIR директория ресурсов для теста и она же название директории установки тестов.

И так же иметь возможность устанавливать библиотеки которые разрабатываются как часть проекта
function(linux_install_lib PROGECT_NAME)
FOREACH(INSTALL_DIR ${LIST_DIR_PROJECT})
install(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION ${INSTALL_DIR}/lib
RESOURCE DESTINATION ${INSTALL_DIR}/lib)
ENDFOREACH(INSTALL_DIR)
endfunction(linux_install_lib)

1 комментарий:

  1. Playtech launches new game - JD Virtual Hub
    Playtech has 안동 출장안마 launched a new Game Playtech game, called Casino: Slots 출장마사지 of Chance: Craps, with the 김제 출장샵 potential 아산 출장마사지 to change 아산 출장마사지 the game's

    ОтветитьУдалить