2013-06-29 12 views
5

Ich möchte Cmake, um Regeln für mich zu installieren, die auch automatisch die Konfiguration und andere Dinge installieren. Ich sah this question, aber fügte hinzu:CMake installieren: Installation von Konfigurationsdateien

add_executable(solshare_stats.conf solshare_stats.conf)

meiner CMakeLists.txt Datei gab mir nur Warnungen und Fehler:

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 

Wie ich Config, init und/oder Logfiles Cmake tun hinzufügen Regeln installieren?

Hier ist meine komplette CMakeLists.txt Datei:

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() 

Antwort

8

Die Conf-Datei im add_executable aufgenommen werden sollte, wo Sie Ihr ausführbares Ziel definieren, nicht in einem separaten Aufruf:

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


Dann müssen Sie install(FILE ...) anstatt install(TARGET ...) verwenden:

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


von

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

tun Sie sagen, Sie zwei ausführbare Dateien erstellen möchten, sogenannte „solshare_stats“ und eine andere namens „solshare_stats.conf“.

Die einzige Quelldatei des zweiten Ziels ist die eigentliche Datei "solshare_stats.conf". Da keine der Quelldateien in diesem Ziel ein Suffix hat, das eine Vorstellung von der Sprache gibt (zB ".cc" oder ".cpp" impliziert C++, ".asm" bedeutet Assembler), kann keine Sprache abgeleitet werden, daher der CMake Error.

+0

Und was sollte ich zu den install() -Aufrufen ändern, damit dies funktioniert? Weil ich mit den aktuellen install() Befehlen diesen Fehler bekomme: 'install TARGETS gegebenes Ziel" solshare_stats.conf "welches in diesem Verzeichnis nicht existiert. ' – Cheiron

+0

Entschuldigung - ich füge einfach das hinzu! – Fraser

+3

Fertig. Übrigens ist es üblich, einen relativen Pfad als 'DESTINATION'-Argument zu übergeben, so dass das' CMAKE_INSTALL_PREFIX' berücksichtigt wird. – Fraser

Verwandte Themen