Tengo un CMakeLists.txt en mi raíz de proyecto y uno en mi carpeta/src. El que está en la carpeta/src solo contiene una variable con los archivos .cpp (set (SOURCEFILES main.cpp foo.cpp)
) y en la raíz CMakeLists.txt hago add_subdirectory(src)
y luego hago add_executable(MyApp ${SOURCEFILES})
.cmake variable scope, add_subdirectory
Pero cmake me da el error
add_executable llamada con un número incorrecto de argumentos, no hay fuentes proporcionados
¿Cómo llego cmake para ver la variable? He leído que cmake sólo conoce las variables globales, pero eso no es obviamente el caso ...
Gracias, esto lo resolvió. Pero otra nota: en el subdirectorio, ahora debe utilizar '$ {CMAKE_CURRENT_SOURCE_DIR}/foo.cpp' en lugar de solo' foo.cpp' porque cmake ahora está en el ámbito principal. – blubberbernd
Como alternativa, puede establecer la variable en el archivo padre CMakeLists.txt antes de la llamada add_subdirectory, y hacer que su definición herede el archivo childCakeLists. De nuevo, deberá calificar los nombres de los archivos si necesita consultarlos desde múltiples archivos CMakeLists. – DLRdave
Tendrá que crear la variable también en el ámbito actual para usar sus valores en el subdirectorio/función: 'set (valor VAR PARENT_SCOPE); set (VAR $ {VAR}); ' –