es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>

Tags:  , ,

Answer

  1. Avatar for 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:

    add_executable(proj_exe ${MAIN_PATH}/main.c)
    target_link_libraries(proj_exe driver)
    

    Aquí, add_executable crea el ejecutable utilizando el archivo main.c ubicado en MAIN_PATH. Luego, target_link_libraries vincula la biblioteca driver que se compiló anteriormente al ejecutable proj_exe. Esto permitirá que el ejecutable utilice las funciones definidas en la biblioteca driver.

    Después de agregar estas líneas al archivo CMakeLists.txt del ejecutable, puedes ejecutar cmake y luego make para compilar el ejecutable con la biblioteca compartida.

Comments are closed.