versiones guia espaƱol descargar actualizar c++ makefile cmake

c++ - guia - qgis manual



InstalaciĆ³n de CMAKE(OBJETIVOS en subdirectorios (2)

Considere el siguiente archivo CMakeLists.txt :

add_subdirectory(execA) add_subdirectory(libB) install(TARGETS execA libB RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)

Recibo el siguiente error:

install TARGETS given target "execA" which does not exist in this directory

execA y libB tienen sus propios archivos CMakeList.txt y se encuentran en el directorio del project , así como en el directorio de compilación que estoy ejecutando cmake ( cmake .. ):

project |------ CMakeList.txt (the one with the code) |----execA | /- .cpp, .hpp and CMakelist.txt |----libB | /- .cpp, .hpp and CMakelist.txt |---- lib |---- bin /---- build (where I´m commanding: $ cmake ..

Ayuda necesaria para arreglar el error.


De acuerdo con este informe de errores , el flujo de comando de install(TARGETS) solo acepta objetivos creados dentro del mismo directorio .

Por lo tanto, necesita mover la llamada add_library() al directorio de nivel superior o dividir la llamada de install(TARGETS) en por cada destino, y mover cada una de ellas al subdirectorio correspondiente.


Aunque ayudaría a ver los archivos CMakeLists.txt contenidos en los subdirectorios, supongo que contienen add_executable y / o add_library para crear tus cosas.
Además, debido a su ejemplo, supongo que está utilizando el mismo nombre de sus directorios para sus objetivos.
Dicho esto, debe saber que los símbolos definidos en un archivo CMakeLists.txt en un subdirectorio no están visibles de forma predeterminada en el contexto del archivo CMakeLists.txt en el directorio principal. Por eso, debería mover sus instrucciones de install dentro de los archivos CMakeLists.txt dentro de sus subdirectorios.
Esto debería resolver el problema, si mis pensamientos eran correctos. De lo contrario, le sugiero que publique en su pregunta también el contenido de los otros archivos mencionados anteriormente.

De todos modos, el error es bastante claro.
El archivo que contiene la declaración de install para el destino llamado X no contiene una declaración de creación de destino ( add_executable y las demás) que da origen a ese objetivo, por lo que continúa diciendo que ese objetivo no existe en ese directorio.