2013-06-29 26 views
5

Я хочу, чтобы Cmake установил для меня правила установки, которые также автоматически устанавливают конфигурацию и другие вещи. Я посмотрел на this question, но добавив:Установка CMake: установка файлов конфигурации

add_executable(solshare_stats.conf solshare_stats.conf)

в мой файл CMakeLists.txt только дал мне предупреждения и ошибки:

CMake Error: CMake can not determine linker language for target:solshare_stats.conf 
CMake Error: Cannot determine link language for target "solshare_stats.conf". 
... 
make[2]: *** No rule to make target `CMakeFiles/solshare_stats.conf.dir/build'. Stop. 
make[1]: *** [CMakeFiles/solshare_stats.conf.dir/all] Error 2 
make: *** [all] Error 2 

Как добавить конфигурации, инициализации и/или логах для CMake установить правила?

Вот мой полный CMakeLists.txt файл:

project(solshare_stats) 
cmake_minimum_required(VERSION 2.8) 
aux_source_directory(. SRC_LIST) 
add_executable(${PROJECT_NAME} ${SRC_LIST}) 
add_executable(solshare_stats.conf solshare_stats.conf) 
target_link_libraries(solshare_stats mysqlcppconn) 
target_link_libraries(solshare_stats wiringPi) 
if(UNIX) 
    if(CMAKE_COMPILER_IS_GNUCXX) 
     SET(CMAKE_EXE_LINKER_FLAGS "-s") 
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall -std=c++0x") 
    endif() 
    install(TARGETS solshare_stats DESTINATION /usr/bin COMPONENT binaries) 
    install(TARGETS solshare_stats.conf DESTINATION /etc/solshare_stats COMPONENT config) 
endif() 

ответ

8

Файл .conf должен быть включен в add_executable где вы определяете свою исполняемую цель, а не в отдельном вызове:

add_executable(${PROJECT_NAME} ${SRC_LIST} solshare_stats.conf) 


Затем вам необходимо использовать install(FILE ...), а не install(TARGET ...):

install(TARGETS solshare_stats DESTINATION /usr/bin COMPONENT binaries) 
install(FILES solshare_stats.conf DESTINATION etc/solshare_stats COMPONENT config) 


Поступая

add_executable(${PROJECT_NAME} ${SRC_LIST}) 
add_executable(solshare_stats.conf solshare_stats.conf) 

вы говорите, вы хотите создать 2 исполняемых файлов, одна называется "solshare_stats" и еще один под названием "solshare_stats.conf".

Единственный исходный файл второй цели - это фактический файл «solshare_stats.conf». Поскольку ни один из исходных файлов этой цели не имеет суффикса, который дает представление о языке (например, «.cc» или «.cpp» подразумевает C++, «.asm» подразумевает ассемблер), ни один язык не может быть выведен, поэтому CMake ошибка.

+0

И что я должен изменить на вызовы install() для этого? Потому что с текущими командами install() я получаю эту ошибку: 'install TARGETS заданную цель" solshare_stats.conf ", которая не существует в этом каталоге.' – Cheiron

+0

Извините - я просто добавлю это! – Fraser

+3

Готово. Кстати, обычно принято относительный путь как аргумент «DESTINATION», так что соблюдается 'CMAKE_INSTALL_PREFIX'. – Fraser

Смежные вопросы