Buscar..


Sintaxis

  • add_executable (target_name [EXCLUDE_FROM_ALL] fuente1 [fuente2 ...])
  • add_library (lib_name [ESTÁTICA | COMPARTIDO | MÓDULO] [EXCLUDE_FROM_ALL] fuente1 [fuente2 ...])

Ejecutables

Para crear un objetivo de compilación que produzca un ejecutable, se debe usar el comando add_executable :

add_executable(my_exe
               main.cpp
               utilities.cpp)

Esto crea un destino de compilación, por ejemplo, make my_exe para GNU make, con las invocaciones adecuadas del compilador configurado para producir un ejecutable my_exe desde los dos archivos de origen main.cpp y utilities.cpp .

De forma predeterminada, todos los destinos ejecutables se agregan a all objetivos BUILD_ALL ( all para GNU make, BUILD_ALL para BUILD_ALL ).
Para excluir un archivo ejecutable que se construyan con el valor por defecto all objetivo, se puede agregar el parámetro opcional EXCLUDE_FROM_ALL justo después del nombre de destino:

add_executable(my_optional_exe EXCLUDE_FROM_ALL main.cpp)

Bibliotecas

Para crear un destino de compilación que cree una biblioteca, use el comando add_library :

add_library(my_lib lib.cpp)

La variable CMake BUILD_SHARED_LIBS controla cada vez que se construye una biblioteca estática ( OFF ) o compartida ( ON ), utilizando por ejemplo cmake .. -DBUILD_SHARED_LIBS=ON . Sin embargo, puede establecer explícitamente la construcción de una biblioteca compartida o estática agregando STATIC o SHARED después del nombre de destino:

add_library(my_shared_lib SHARED lib.cpp) # Builds an shared library
add_library(my_static_lib STATIC lib.cpp) # Builds an static library

El archivo de salida real difiere entre los sistemas. Por ejemplo, una biblioteca compartida en sistemas Unix generalmente se llama libmy_shared_library.so , pero en Windows sería my_shared_library.dll y my_shared_library.lib .

Al igual que add_executable , agregue EXCLUDE_FROM_ALL antes de la lista de archivos de origen para excluirlo de all destinos:

add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)

Las bibliotecas, que están diseñadas para cargarse en tiempo de ejecución (por ejemplo, complementos o aplicaciones que usan algo como dlopen ), deben usar MODULE lugar de SHARED / STATIC :

add_library(my_module_lib MODULE lib.cpp)

Por ejemplo, en Windows, no habrá un archivo de importación ( .lib ), porque los símbolos se exportan directamente en el archivo .dll .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow