Error de CMake: OBJETIVOS no se otorga DESTINO DE BIBLIOTECA para el destino de biblioteca compartida
lemon-graph-library (3)
Conseguí esto ... Otra razón por la que sucede esto es cuando creas una biblioteca compartida
add_library ($ {NAME} FUENTES COMPARTIDAS)
luego, cuando Cmake llega al comando de instalación en la plataforma Windows, se queja de estos errores, la solución es usar RUNTIME en lugar de LIBRARY, como
if(WIN32)
install(TARGETS ${NAME}
RUNTIME DESTINATION path)
else()
install(TARGETS ${NAME}
LIBRARY DESTINATION path)
endif()
Al crear un proyecto de código abierto con CMake (en mi caso, era la biblioteca de gráficos de limón), recibí este error cuando intenté crear bibliotecas compartidas mediante -DBUILD_SHARED_LIBS=1
:
TARGETS given no LIBRARY DESTINATION for shared library target
¿De dónde viene este error y cómo lo arreglo?
Después del DESTINATION
, debe tener bin
, lib
, include
.
instalar lib
o bin
install(TARGETS snappy
EXPORT SnappyTargets
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # DESTINATION error
RUNTIME DESTINATION bin ${CMAKE_INSTALL_BINDIR} # should add bin or other dir
LIBRARY DESTINATION lib ${CMAKE_INSTALL_LIBDIR}
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR # DESTINATION error
ARCHIVE DESTINATION lib ${CMAKE_INSTALL_LIBDIR} # should add lib
)
Por ejemplo, instale el archivo .h
:
install(
FILES
"${PROJECT_SOURCE_DIR}/test_hard1.h"
"${PROJECT_BINARY_DIR}/config.h"
# DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} # error install FILES given no DESTINATION!
# add include after DESTINATION, then it works
DESTINATION include ${CMAKE_INSTALL_INCLUDEDIR}
)
vea https://cmake.org/cmake/help/v3.0/command/install.html para más detalles:
install(TARGETS myExe mySharedLib myStaticLib
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static)
install(TARGETS mySharedLib DESTINATION /some/full/path)
En mi CMakeLists.txt
, mi comando INSTALL no tenía ningún parámetro LIBRARY.
Cambiando de esto:
INSTALL(
TARGETS lemon
ARCHIVE DESTINATION lib
COMPONENT library
)
a esto:
INSTALL(
TARGETS lemon
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib # <-- Add this line
COMPONENT library
)
arreglado mi problema