tutorial instalar como include cmake command-line-arguments

include - instalar - Especificar incluir directorios en la línea de comando cmake



como instalar cmake en windows (2)

¿Es posible especificar un directorio de inclusión cuando se ejecuta cmake ? Por ejemplo

cmake . -INCLUDE=/foo/bar

Los archivos de encabezado están en un directorio separado de las fuentes que me gustaría compilar, y me gustaría remediar esto sin modificar el Makefile generado por cmake .

Actualizar

El proyecto tiene un CMakeLists.txt . Extracto:

INCLUDE_DIRECTORIES(${EO_SOURCE_DIR}/src) INCLUDE_DIRECTORIES(${EO_SOURCE_DIR}/src/ga) INCLUDE_DIRECTORIES(${EO_SOURCE_DIR}/src/utils)

¿Puede ${EO_SOURCE_DIR} establecerse desde la línea de comando?


La forma correcta de hacerlo 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 YOURLIB_INCLUDE_DIR/header.h) message(SEND_ERROR "Can''t find header.h in ${YOURLIB_INCLUDE_DIR}) endif() include_directories(${YOURLIB_INCLUDE_DIR})

Ahora puede configurarlo desde la línea de comando: cmake -D YOURLIB_INCLUDE_DIR=/path/to/yourlib/include .


Si la ruta a sus encabezados se fija en relación con sus fuentes, entonces debe poder evitar tener que pasar esta información a través de la línea de comandos.

Supongamos 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 la carpeta /my_includes a la lista de incluir rutas de búsqueda, solo necesita agregar lo siguiente:

include_directories(my_includes)


Para obtener más información sobre include_directories , ejecuta

cmake --help-command include_directories

Respuesta para actualizar en cuestión:

Sí, usando la opción de línea de comando -D solo haz

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 argumento -D una vez (a menos que la ruta requerida cambie o elimine su archivo CMakeCache, etc.)