c++ - Cómo agregar el indicador del compilador “-l”(ell) en CMake
clion (2)
-lq no es un indicador del compilador (CFLAGS) sino un indicador del vinculador.
Para pasar una biblioteca en un proyecto CMake, debe usar:
target_link_libraries(target_name libraries...)
Tenga en cuenta que si especifica ''q'' como biblioteca, el proyecto se vinculará con libq.a o, si está en Windows q.dll.
... en su CMakeLists.txt la línea correcta para agregar es:
target_link_libraries(day_g pq)
Tenga en cuenta también que cuando agrega un CFLAG también debe "recordar" los anteriores que las bibliotecas o su plataforma pueden agregar, es decir:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
Para verificar las banderas exactas que cmake está pasando al compilador o al enlazador, siempre puede ejecutar, desde el directorio de compilación, el siguiente comando:
make VERBOSE=1
Trabaja en Ubuntu 16
g++ main.cpp -lpq
comando
g++ main.cpp -lpq
para
g++ main.cpp -lpq
mi pequeño proyecto.
Ahora uso
Clion
y quiero hacer lo mismo que hago con
g++
.
Pero no puedo agregar indicadores del compilador en el archivo
cmake
y obtener un error de compilación.
cmake_minimum_required(VERSION 3.5.1)
project(day_g)
set(CMAKE_CXX_FLAGS "-lpq")
add_definitions(-lpq)
message("CMAKE_CXX_FLAGS is ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(day_g ${SOURCE_FILES})
También ejecuto solo el archivo cmake y obtengo
CMAKE_CXX_FLAGS
con el indicador
-lpq
.
CMAKE_CXX_FLAGS is -lpq
-- Configuring done
-- Generating done
¿Cómo agregar correctamente las banderas del compilador al archivo cmake?
El indicador
-l
es para
enlazador
, no para
compilador
.
Este indicador se utiliza para vincular con bibliotecas.
CMake tiene un comando especial
target_link_libraries
para ese propósito:
target_link_libraries(day_g pq)