[Compilación cruzada uno] Opciones de compilación de CMake

1. Los significados específicos de las opciones de CMake más utilizadas son los siguientes:

 PROYECTO (nombre de destino)

 Después de agregar ADD_DEFINITIONS (-g), es equivalente a agregar la opción -g al compilar

Después de agregar ADD_DEFINITIONS (-Os), es equivalente a agregar la opción -Os al compilar

ADD_DEFINITIONS (-D DEBUG_WARN) agregará la definición de macro DEBUG_WARN en la línea de comando gcc

SET (CMAKE_CXX_FLAGS "") Configuración de opciones del compilador
SET (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS ""

SET (CMAKE_EXE_LINKER_FLAGS "$ {CMAKE_EXE_LINKER_FLAGS} -Wl, - no-export-dynamic") no exporta todos los símbolos globales a la tabla de símbolos dinámicos

SET (Linux CMAKE_SYSTEM_NAME)
SET (TOOLCHAIN_DIR "编译链目录")
SET (CMAKE_FIND_ROOT_PATH $ {TOOLCHAIN_DIR})
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NUNCA)
SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY SOLAMENTE)
SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE SOLAMENTE)
SET (CMAKE_C_COMPILER $ {TOOLCHAIN_DIR} C编译链)
SET ( CMAKE_CXX_COMPILER $ {TOOLCHAIN_DIR} C ++ 编译 链)

INCLUDE_DIRECTORIES (directorio) archivos de encabezado utilizados para la compilación

SET (directorio SRCSRC_DIRS) Ruta del archivo fuente compilado

list (APPEND SOURCES $ {SRCSRC_DIRS} /xx.c) Especifica el archivo fuente compilado

LINK_DIRECTORIES (directorio) La ruta de la biblioteca dependiente

Bibliotecas dependientes de SET (LIBS_LIB nombre de biblioteca)

LINK_LIBRARIES (pthread rt m $ {LIBS_LIB} dl) La biblioteca que se vinculará

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY $ {PROJECT_BINARY_DIR} /../../../ Bin /) 指定 生成 的 文件 路径
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY $ {PROJECT_BINARY_DIR} /../../..AKEPUT_DIRECTORY /)
set ( PROJECT_BINARY_DIR} /../../../ Bin /)

ADD_LIBRARY ($ {PROJECT_NAME} SHARED $ {SOURCES}) biblioteca dinámica

ADD_LIBRARY ($ {PROJECT_NAME} STATIC $ {SOURCES}) biblioteca estática

ADD_EXECUTABLE ($ {PROJECT_NAME} $ {SOURCES}) archivo ejecutable

TARGET_LINK_LIBRARIES ($ {PROJECT_NAME} -Wl, - start-group $ {LIBS_LIB} -Wl, - end-group) Resuelve el problema de la secuencia de biblioteca estática al vincular

2. Parte de la descripción del contenido

-g Genera información de depuración

-O0 Sin procesamiento de optimización

-O o -O1 optimizan el código generado

-O2 se optimiza aún más.
-O3 está más optimizado que -O2, incluidas las funciones en línea

-Os: ejecute todas las opciones -O2 que no aumentan el tamaño del archivo de destino y ejecute las opciones de optimización que reducen específicamente el tamaño del archivo de destino

-Wall genera todos los mensajes de advertencia

-Wl pasa los siguientes parámetros al enlazador

3. Parámetros GCC / G ++

-s eliminar la tabla de símbolos del archivo ejecutable final

-funciones-secciones -fdata-secciones Crea cada función o símbolo como una sección, donde cada nombre de sección es consistente con la función o el nombre de datos

-fvisibility = hidden Establece la visibilidad predeterminada de los símbolos en el archivo de origen. Cuando se establece en el valor predeterminado, todos los símbolos que no están explícitamente marcados como ocultos se procesan como visibles; cuando se establece en ocultos, los símbolos que no están explícitamente marcados como visibles se procesan como oculto Para las funciones de la interfaz, puede agregar __attribute__ ((visibilidad ("predeterminado"))) antes de la declaración de la función , para que los símbolos se exporten por separado

-fno-exceptions Deshabilita el mecanismo de excepción, generalmente se usará solo cuando la eficiencia y el uso de recursos del programa sean más importantes.

-fno-rtti deshabilita la información del tipo de tiempo de ejecución      

-fno-mesas-de-descanso

-fno-asynchronous-wind-tables prohíben la generación .eh_framey la .eh_frame_hdrsección

-fomit-frame-pointer SFP se puede optimizar en tiempo de compilación ( el efecto de optimización de la opción " -fomit-frame-pointer " en la plataforma del brazo es más obvio)

-Wl, -Bsymbolic Forzar el uso de definiciones de variables globales locales, de modo que las definiciones de variables globales de la biblioteca de vínculos dinámicos no se sobrescriban con la definición del mismo nombre en la biblioteca de aplicaciones / vínculos dinámicos

Parámetros usados ​​al conectar

-Wl, –gc-section eliminan las secciones no utilizadas y reducen el tamaño del programa

-Wl, --no-export-dynamic no exporta todos los símbolos globales a la tabla de símbolos dinámicos

 

Supongo que te gusta

Origin blog.csdn.net/Swallow_he/article/details/110938522
Recomendado
Clasificación