Pregunta

Tengo dos proyectos, los cuales utilizan CMake. Ahora quiero incluir uno de los proyectos como una biblioteca dentro de la otra, mientras que todavía mantiene la capacidad de los compile como proyectos independientes.

Lo que he hecho hasta ahora es: Utilice el sistema de control de versiones para clonar una copia del proyecto de niño en un subdirectorio del proyecto principal. He utilizado el "add_subdirectory" para incluir el CMakeLists.txt del proyecto secundario en el proyecto principal. Y he fijado conflictos de nombres entre los objetivos cambiando el nombre de algunos de los objetivos en el proyecto secundario.

Sin embargo, un problema que estoy corriendo en es que no parecen las diferentes pruebas de configuración en el proyecto secundario que estar en ejecución. Por ejemplo, el proyecto niño utiliza el módulo FindThreads para determinar qué opciones están disponibles primitivas de sincronización. El proyecto principal no es consciente de los problemas de roscado y por lo tanto no tiene ningún pruebas relacionadas con esta. Del mismo modo, el proyecto niño tiene varias pruebas para encabezados y de tal manera que no son necesarios por el proyecto principal. Ninguna de estas pruebas parece ser correr, y no se están añadiendo los símbolos definidos por estas pruebas en el fichero de CMakeCache.txt.

Realmente no quiero tener que izar todas las pruebas del proyecto infantil (que mayormente se refieren a cuestiones específicas de la plataforma que no son relevantes para los padres) en CMakeLists.txt del proyecto principal.

¿Fue útil?

Solución

CMake 2.8 añade una nueva módulo, que le permite crear un objetivo a medida para impulsar la construcción de otro proyecto CMake. La documentación sobre este tema es un poco débil, pero parece que podría hacer lo que quiera.

Creo que la idea sería llamar ExternalProject_Add de su proyecto principal, que apunta al directorio de origen del proyecto secundario (que incluso puede tener que comprobar el proyecto secundario de SVN o CVS para usted, agradable!).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top