descarga - Agregar fuente en un subdirectorio a un proyecto de cmake
cmake vs make (2)
¿No puedes simplemente configurar todas tus fuentes en project / source / CMakelists.txt entonces?
De todos modos, lo que necesitas es la opción PARENT_SCOPE
o CACHE
en el comando set .
Tengo un proyecto que no se ha dividido en bibliotecas, pero la fuente está organizada en un árbol de directorios. No sé cómo decirle a cmake que baje un directorio, luego agregue la fuente en ese directorio al proyecto definido en el directorio padre. He intentado lo siguiente:
en project / source / CMakelists.txt:
set(SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/unitTest/main.cpp
)
add_subdirectory("${PROJECT_SOURCE_DIR}/folder1")
add_executable(UnitTestRNG ${SOURCE} ${HEADERS})
luego en project / source / folder1 / CMakeLists.txt:
set(SOURCE
${SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/file1.cpp
${CMAKE_CURRENT_SOURCE_DIR}/file2.cpp
)
set(HEADERS
${HEADERS}
${CMAKE_CURRENT_SOURCE_DIR}/file1.hpp
${CMAKE_CURRENT_SOURCE_DIR}/file2.hpp
)
usando algunas instrucciones message (), he encontrado que la carpeta secundaria obtendrá el contenido de la variable SOURCE, pero su nueva asignación a esa variable no persistirá al regresar al padre CMakeLists.txt
Buscar ejemplos y en el tutorial de cmake me ha llevado a la conclusión de que: - Las estructuras de archivos de origen generalmente son planas dentro de un proyecto - Si el código está dividido en carpetas, por lo general se divide en las bibliotecas correspondientes.
Me pregunto si hay alguna "mejor práctica" de la cual me estoy desviando al intentar esta estructura.
Al igual que la segunda parte de la respuesta de arrowdodger dice: en project / source / folder1 / CMakeLists.txt:
set(SOURCE
${SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/file1.cpp
${CMAKE_CURRENT_SOURCE_DIR}/file2.cpp
PARENT_SCOPE
)
set(HEADERS
${HEADERS}
${CMAKE_CURRENT_SOURCE_DIR}/file1.hpp
${CMAKE_CURRENT_SOURCE_DIR}/file2.hpp
PARENT_SCOPE
)