Solución:
Si la ruta a sus encabezados es fija en relación con sus fuentes, entonces debería poder evitar tener que pasar esta información a través de la línea de comando.
Digamos que la estructura de directorios de su proyecto es:
/CMakeLists.txt
/my_sources/main.cpp
/my_sources/foo.cpp
/my_includes/foo.hpp
y en su CMakeLists.txt, actualmente tiene algo como:
add_executable(MyExe my_sources/main.cpp my_sources/foo.cpp)
luego para agregar el /my_includes
carpeta a la lista de rutas de búsqueda incluidas, solo necesita agregar lo siguiente:
include_directories(my_includes)
Para más información sobre include_directories
, correr
cmake --help-command include_directories
Respuesta a la actualización en cuestión:
Sí, usando el -D
opción de línea de comando solo hazlo
cmake . -DEO_SOURCE_DIR:PATH=<Path to required dir>
La variable ${EO_SOURCE_DIR}
se almacena en caché como resultado de esto, por lo que solo necesita este -D
argumento una vez (a menos que la ruta requerida cambie o elimine su archivo CMakeCache, etc.)
La forma correcta de hacer esto es definir una variable en CMakeLists.txt y pedirle al usuario que la configure:
set(YOURLIB_INCLUDE_DIR "" CACHE FILEPATH "Path to yourlib includes")
if(NOT EXISTS ${YOURLIB_INCLUDE_DIR}/header.h)
message(SEND_ERROR "Can't find header.h in ${YOURLIB_INCLUDE_DIR})
endif()
include_directories(${YOURLIB_INCLUDE_DIR})
Ahora puedes configurarlo desde la línea de comando: cmake -D YOURLIB_INCLUDE_DIR=/path/to/yourlib/include .