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

161
Vistas
CMake un directorio de compilación para múltiples proyectos con contexto separado

Estoy tratando de construir varios proyectos dentro de un directorio de compilación con la siguiente estructura:

 |------ CMakeLists.txt (The main Cmake) | |------ ProjectAPP | |----- .c/h files | |----- sdh_config.h | |----- CMakeList.txt | |------ ProjectDFU | |----- .c/h files | |----- sdh_config.h | |----- CMakeList.txt | |-------- SDK | |---- SDK used by both projects

La idea sería construir dos proyectos independientes, ambos construidos sobre un único SDK. Tenga en cuenta que ambos proyectos se basan en una configuración diferente del SDK, realizada por sus respectivos sdk_config.h .

El CMakeList.txt principal se ve así:

 cmake_minimum_required(VERSION 3.22) project(project) add_dependency(ProjectAPP) add_dependency(ProjectDFU) add_custom_target(app DEPENDS ${exec_target_app} ... ) add_custom_target(dfu DEPENDS ${exec_target_dfu} ... ) add_custom_target(merge DEPENDS app dfu ... )

Básicamente, mi único uso para construir los dos proyectos en el mismo lugar es que puedo tener objetivos que dependen de ambos ejecutables para poder hacer algo con eso.

Mi problema:

El SDK, basado en cmake, está fragmentado en cientos de pequeñas bibliotecas como esta:

 add_library(lib INTERFACE "file1.c" "file2.c" )

La mayoría de estas bibliotecas serán utilizadas por ambos proyectos, pero con diferentes parámetros de compilación (cf. sdk_config.h ).

Donde estoy ahora mismo, recibo el siguiente error:

 add_library cannot create target "lib" because another target with the same name already exists. The existing target is an interface library created in source directory "ProjectAPP". See documentation for policy CMP0002 for more details.

Mi pregunta:

¿Cuál sería la mejor manera de aislar ambos proyectos en dos contextos de compilación diferentes sin dejar de tener dependencias en cada proyecto en el nivel raíz?

Gracias de antemano por cualquier ayuda.

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

0

Respondiendo a mi propia pregunta, no estoy seguro de si es la mejor manera de manejar esto, pero cmake ExternalProject resolvió mi problema.

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