Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

359
Vistas
¿Cómo juzgar si el elemento target_link_libraries es un nombre de biblioteca o un objetivo?

Tengo algunos problemas con la función cmake target_link_libraries. En mi caso, hay tres proyectos como este, lo que significa que A depende de B, B depende de C

 A(exec) --> B(static library) --> C(static library alias C::C)

Escribo un CMakeLists.txt para B así:

 find_package(C REUQIRED) add_library(B ...) target_link_libraries(B PRIVATE C::C)

Y funciona bien, cumple con éxito. El archivo cmake de A es así:

 find_package(B REQUIRED) add_exectuable(A ...) target_link_libraries(AB)

Informa un error al vincular A, cmake establece un indicador de vinculación "-lC::C", y luego dijo que C::C no existe. ¿Cómo sucedió? Creo que C:: C es un objetivo y A debería saberlo, pero creo que es un nombre de biblioteca. Y creo que A no debería saber que B depende de C, es una biblioteca privada.

No quiero escribir find_packge(C) en el cmake de A, porque C es una biblioteca estática, creo que B debería manejar todas las dependencias de C, ¿no?

Entonces, ¿alguien sabe cómo solucionarlo?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Resolví este problema finalmente. En mi caso, B usa la función de C en el código de la plantilla, y B no crea una instancia de esta plantilla, por lo que C::C no se vincularía a la biblioteca estática de B. Pero A crearía una instancia de la plantilla de B, por lo que A necesita C::C, por eso La bandera PRIVADA de B era inútil.

Para ayudar a A a encontrar el C::C, debo usar find_depecncy(C) en el config.cmake de B para que A conozca la dependencia de B cuando use find_package(B).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda