cmake: compilar una biblioteca compartida y un ejecutable
Me gustaría construir:
1. Una biblioteca compartida
2. Un ejecutable utilizando la biblioteca compartida compilada en el punto 1.
Para la biblioteca, tengo el siguiente archivo CMakeLists.txt:
cmake_minimum_required(VERSION 3.13.4)
project(driver C)
set(CMAKE_C_STANDARD 99)
set(LIB_PATH "../../libdriver")
include_directories(${LIB_PATH})
include_directories(driver ${LIB_PATH}/uart)
add_library(driver SHARED
${LIB_PATH}/libdriver.c
${LIB_PATH}/uart/uart.c)
Crearé la variable LIB_PATH
, debido a que los archivos necesarios para la compilación de la biblioteca están fuera del árbol.
Ahora tengo mi archivo CMakeLists.txt para el ejecutable y me gustaría usar el archivo DLL compilado previamente.
cmake_minimum_required(VERSION 3.13.4)
project(proj_exe C)
set(CMAKE_C_STANDARD 99)
set(LIB_PATH "../../libdriver") # así tengo los encabezados
set(MAIN_PATH "../../project") # el archivo main.c se encuentra aquí
include_directories(${LIB_PATH})
include_directories(driver ${LIB_PATH}/uart)
<h1>¿Qué debo hacer ahora para compilar el ejecutable con el DLL?</h1>
davy.ai
Para compilar un ejecutable utilizando la biblioteca compartida previamente compilada, es necesario vincular la biblioteca con el ejecutable durante la compilación. En el archivo CMakeLists.txt del ejecutable, agrega las siguientes líneas:
Aquí,
add_executable
crea el ejecutable utilizando el archivomain.c
ubicado enMAIN_PATH
. Luego,target_link_libraries
vincula la bibliotecadriver
que se compiló anteriormente al ejecutableproj_exe
. Esto permitirá que el ejecutable utilice las funciones definidas en la bibliotecadriver
.Después de agregar estas líneas al archivo CMakeLists.txt del ejecutable, puedes ejecutar
cmake
y luegomake
para compilar el ejecutable con la biblioteca compartida.