paquete de instalación cmake

instalar cmake

introducir

Sitio web oficial de cmake : https://cmake.org/
Dirección de descarga de cmake :
https://cmake.org/files/
https://github.com/Kitware/CMake/releases
https://github.com/SFUMECJF/cmake - ejemplos-chino

Al utilizar cmake, los pasos más comunes son:

mkdir build && cd build
cmake ..
make
make install

El comando de instalación se utiliza para definir las reglas de instalación. El contenido instalado puede incluir archivos binarios de destino, bibliotecas dinámicas, bibliotecas estáticas, archivos, directorios, scripts, etc.

install(TARGETS <target>... [...])
install({
    
    FILES | PROGRAMS} <file>... [...])
install(DIRECTORY <dir>... [...])
install(SCRIPT <file> [...])
install(CODE <code> [...])
install(EXPORT <export-name> [...])

También se utiliza una variable muy útil CMAKE_INSTALL_PREFIX para especificar el prefijo de dirección relativo cuando se instala cmake. Uso como:

cmake -DCMAKE_INSTALL_PREFIX=/usr ..


DESTINATION 定义了安装的路径,如果路径以/开头,那么指的是绝对路径,这时候
CMAKE_INSTALL_PREFIX 其实就无效了。如果你希望使用 CMAKE_INSTALL_PREFIX 来
定义安装路径,就要写成相对路径,即不要以/开头,那么安装后的路径就是
${CMAKE_INSTALL_PREFIX}/<DESTINATION 定义的路径

在CMake中,采用 CMAKE_INSTALL_PREFIX来指定文件的安装位置,Linux下默认是/usr/local;Windows的默认值为 c:/Program Files/${PROJECT_NAME}

Introducción al comando de instalación

Instalación de archivos de destino

install(TARGETS targets... [EXPORT <export-name>]
        [[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
        PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
        [DESTINATION <dir>]
        [PERMISSIONS permissions...]
        [CONFIGURATIONS [Debug|Release|...]]
        [COMPONENT <component>]
        [NAMELINK_COMPONENT <component>]
        [OPTIONAL] [EXCLUDE_FROM_ALL]
        [NAMELINK_ONLY|NAMELINK_SKIP]
        ] [...]
        [INCLUDES DESTINATION [<dir> ...]]
        )

en parametrosOBJETIVOPueden ser muchos tipos de archivos de destino, el más común es a través deAGREGAR_EXECUTABLEoAÑADIR_BIBLIOTECAEl archivo de destino definido, es decir.Binario ejecutable, biblioteca dinámica, biblioteca estática:

Archivo de destino contenido Variables del directorio de instalación Carpeta de instalación predeterminada
ARCHIVO biblioteca estática ${CMAKE_INSTALL_LIBDIR} biblioteca
BIBLIOTECA biblioteca dinámica ${CMAKE_INSTALL_LIBDIR} biblioteca
TIEMPO DE EJECUCIÓN Archivo binario ejecutable ${CMAKE_INSTALL_BINDIR} papelera
PUBLIC_HEADER Archivos de encabezado PUBLIC asociados con la biblioteca ${CMAKE_INSTALL_INCLUDEDIR} incluir
PRIVATE_HEADER Archivos de encabezado PRIVADOS asociados con la biblioteca ${CMAKE_INSTALL_INCLUDEDIR} incluir

Para cumplir con la ruta de instalación predeterminada general, si se establece el parámetro DESTINO , se recomienda configurar la carpeta en la variable del directorio de instalación.

Por ejemplo:

INSTALL(TARGETS myrun mylib mystaticlib
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

El ejemplo anterior instalará: el binario ejecutable myrun en el directorio CMAKEINSTALLBINDIR ** **, la biblioteca dinámica libmylib.so en el directorio ** ** {CMAKE_INSTALL_BINDIR}** y la biblioteca dinámica libmylib.so en **C M A K EyoN S T A L LBI N D I RDirectorio , biblioteca dinámica lib m y lib .s o está instalado en _ _ _ _ {CMAKE_INSTALL_LIBDIR}, la biblioteca estática libmystaticlib.a se instala en${CMAKE_INSTALL_LIBDIR}.
El significado de algunos otros parámetros:

  • DESTINO : EspecificaciónDirectorio en el disco donde se instalarán los archivos
  • PERMISOS : EspecificaciónPermisos del archivo de instalación。有效权限是OWNER_READ,OWNER_WRITE,OWNER_EXECUTE,GROUP_READ,GROUP_WRITE,GROUP_EXECUTE,WORLD_READ,WORLD_WRITE,WORLD_EXECUTE,SETUID y SETGID;
  • CONFIGURACIONES : Especificar reglas de instalaciónLista de configuraciones de compilación aplicables (DEBUG o RELEASE, etc.);
  • EXCLUDE_FROM_ALL : especifica que el archivo se excluye de la instalación completa y se instala solo como parte de una instalación específica del componente;
  • OPCIONAL : Especificar no es un error si el archivo a instalar no existe.
    prestar atenciónCONFIGURACIÓNparámetros, el valor especificado por esta opción se aplica solo a las opciones enumeradas después de esta opción: por ejemplo, para establecer rutas de instalación independientes para las configuraciones de depuración y versión, haga lo siguiente:
install(TARGETS target
        CONFIGURATIONS Debug
        RUNTIME DESTINATION Debug/bin)
        install(TARGETS target
        CONFIGURATIONS Release
        RUNTIME DESTINATION Release/bin)

En otras palabras, las rutas de instalación de DESTINO de las versiones DEBUG y RELEASE son diferentes, por lo que DESTINO debe estar detrás de CONFIGUACIONES .

Instalación de archivos ordinarios.

install(<FILES|PROGRAMS> files...
        TYPE <type> | DESTINATION <dir>
        [PERMISSIONS permissions...]
        [CONFIGURATIONS [Debug|Release|...]]
        [COMPONENT <component>]
        [RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])

ARCHIVOS|PROGRAMAS siLos nombres de archivos proporcionados por rutas relativas se interpretarán en relación con el directorio de origen actual.. en,ARCHIVOS es un archivo de texto normalPROGRAMAS se refiere a programas ejecutables que no son archivos de destino (como archivos de script)

Si no se proporciona el parámetro PERMISSIONS, de forma predeterminada ,archivo de texto ordinariotendrá permisos OWNER_WRITE, OWNER_READ, GROUP_READ y WORLD_READ, que son 644 permisos; mientrasPrograma ejecutable de archivo no objetoTendrá OWNER_EXECUTE, GROUP_EXECUTE y WORLD_EXECUTE, que son 755 permisos.

Entre ellos, cmake también proporciona rutas de instalación predeterminadas para diferentes TIPO, como se muestra en la siguiente tabla:

tipo TIPO Variables del directorio de instalación Carpeta de instalación predeterminada
PAPELERA ${CMAKE_INSTALL_BINDIR} papelera
SBIN ${CMAKE_INSTALL_SBINDIR} sbin
LIBRO ${CMAKE_INSTALL_LIBDIR} biblioteca
INCLUIR ${CMAKE_INSTALL_INCLUDEDIR} incluir
SYSCONF ${CMAKE_INSTALL_SYSCONFDIR} etc.
ESTADO COMPARTIDO ${CMAKE_INSTALL_SHARESTATEDIR} com
ESTADO LOCAL ${CMAKE_INSTALL_LOCALSTTEDIR} era
ESTADO DE EJECUCIÓN ${CMAKE_INSTALL_RUNSTTEDIR} /correr
DATOS ${CMAKE_INSTALL_DATADIR}
INFORMACIÓN ${CMAKE_INSTALL_INFODIR} /información
LUGAR ${CMAKE_INSTALL_LOCALEDIR} /lugar
HOMBRE ${CMAKE_INSTALL_MANDIR} /hombre
DOC ${CMAKE_INSTALL_DOCDIR} /doc

Tenga en cuenta que algunos tipos de valores predeterminados integrados utilizan el directorio DATAROOT como prefijo, con el valor de la variable CMAKE_INSTALL_DATAROOTDIR como contenido.

El significado de algunos otros parámetros:

  • DESTINO : EspecificaciónDirectorio en el disco donde se instalarán los archivos
  • PERMISOS : EspecificaciónPermisos del archivo de instalación。有效权限是OWNER_READ,OWNER_WRITE,OWNER_EXECUTE,GROUP_READ,GROUP_WRITE,GROUP_EXECUTE,WORLD_READ,WORLD_WRITE,WORLD_EXECUTE,SETUID y SETGID;
  • CONFIGURACIONES : Especificar reglas de instalaciónLista de configuraciones de compilación aplicables (DEBUG o RELEASE, etc.);
  • EXCLUDE_FROM_ALL : especifica que el archivo se excluye de la instalación completa y se instala solo como parte de una instalación específica del componente;
  • OPCIONAL : Especificar no es un error si el archivo a instalar no existe.
  • RENAME : Especifica el nombre del archivo instalado, que puede ser diferente del archivo original. Solo se permite cambiar el nombre si el comando instaló un solo archivo.

Instalación del directorio

install(DIRECTORY dirs...
        TYPE <type> | DESTINATION <dir>
        [FILE_PERMISSIONS permissions...]
        [DIRECTORY_PERMISSIONS permissions...]
        [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]
        [CONFIGURATIONS [Debug|Release|...]]
        [COMPONENT <component>] [EXCLUDE_FROM_ALL]
        [FILES_MATCHING]
        [[PATTERN <pattern> | REGEX <regex>]
        [EXCLUDE] [PERMISSIONS permissions...]] [...])

Este comandoEl contenido de uno o más directorios se instala en un destino determinado y la estructura del directorio se copia una por una en la ubicación de destino.. El último componente de cada nombre de directorio se agrega al directorio de destino, pero esto se puede evitar usando una barra diagonal, que deja el último componente en blanco. ¿Qué significa?

Por ejemplo,Si DIRECTORIO va seguido de abc, significa que el directorio abc se instalará en la ruta de destino. abc/ significa que el contenido del directorio abc se instalará en la ruta de destino, pero el directorio abc en sí no se instalará.. Es decir, si el nombre del directorio no termina en /, entonces este directorio se instalará como abc en la ruta de destino. Si el nombre del directorio termina en /, significa que el contenido de este directorio se instalará en la ruta de destino. pero no el directorio en sí.

ARCHIVO_PERMISOSyDIRECTORIO_PERMISOSLas opciones especifican permisos sobre archivos y directorios en el destino. Si se especifica USE_SOURCE_PERMISSIONS y no se especifica FILE_PERMISSIONS, los permisos de archivos se copian desde la estructura del directorio de origen.Si no se especifican permisos, los archivos recibirán los permisos predeterminados especificados en el formulario ARCHIVOS del comando (644 permisos), y los directorios recibirán los permisos predeterminados especificados en el formulario PROGRAMAS del comando (755 permisos).

puedo usarOpciones PATTERN o REGEX para controlar la instalación de directorios con granularidad fina, puede especificar un patrón comodín o una expresión regular para que coincida con los directorios o archivos encontrados en el directorio de entrada. PATTERN solo coincidirá con el nombre de archivo completo, mientras que REGEX coincidirá con cualquier parte del nombre de archivo, pero puede simular el comportamiento de PATTERN usando / y $.

Ciertos parámetros que siguen a una expresión PATTERN o REGEX se aplican solo a archivos o directorios que satisfacen la expresión. Por ejemplo: la opción EXCLUIR omitirá los archivos o directorios coincidentes. La opción PERMISOS anulará la configuración de permisos para archivos o directorios coincidentes.

Por ejemplo:

INSTALL(DIRECTORY icons scripts/ DESTINATION share/myproj
        PATTERN "CVS" EXCLUDE
        PATTERN "scripts/*"
        PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
        GROUP_EXECUTE GROUP_READ)

El resultado de la ejecución del comando es: instale el directorio de iconos para compartir/myproj e instale el contenido de scripts/ para compartir/myproj. Ninguno de los directorios contiene un subdirectorio llamado CVS. Los permisos especificados para los archivos scripts/* son OWNER_EXECUTE, OWNER_WRITE , PROPIETARIO_READ, GROUP_EXECUTE, GROUP_READ.

Ejecutando el script durante la instalación

A veces es necesario imprimir algunas declaraciones o ejecutar algunas instrucciones de cmake durante el proceso de instalación:

install([[SCRIPT <file>] [CODE <code>]]
[COMPONENT <component>] [EXCLUDE_FROM_ALL] [...])

El parámetro SCRIPT se llamará durante el proceso de instalación dadoArchivo de secuencia de comandos CMake(es decir, archivo de script .cmake), si el nombre del archivo de script es una ruta relativa, se interpretará en relación con el directorio de origen actual. El parámetro CODE llamará al código CMake proporcionado durante la instalación. Especifique el código como un parámetro único dentro de una cadena entre comillas dobles.
Por ejemplo:

install(CODE "MESSAGE(\"Sample install message.\")")

El comando ejecutará el código cmake e imprimirá declaraciones durante el proceso de instalación.

cmake -dcmake_install_prefix=/usr

Especifique la ruta de instalación como /usr

El prefijo de la ruta de instalación especifica:

El directorio de instalación es /usr/local. Si desea cambiar el directorio de instalación, hay tres formas.

Especificar cuando la línea de comando cmake

    cmake  -DCMAKE_INSTALL_PREFIX = /usr/local/

establecer comando especifica

    set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})

Supongo que te gusta

Origin blog.csdn.net/u010523811/article/details/127957938
Recomendado
Clasificación