2017-06-05 133 views
1

正常编译(正常工作):如何将外部库添加到CMakeLists?

g++ DBHandler.cpp Functions.cpp Main.cpp -I/usr/local/include -L/usr/local/lib -lconfig++ -lpqxx -lpq -o dbhandler 

它单曲可能运行:

./dbhandler 

的CMakeLists.txt(标准):

cmake_minimum_required(VERSION 2.8.9) 
project(DBHandler) 
include_directories(include) 
file(GLOB SOURCES "src/*.cpp") 
target_link_libraries(dbhandler config++ pqxx pq) 
add_executable(dbhandler ${SOURCES}) 

如何改变的CMakeLists.txt并添加:

-I/usr/local/include -L/usr/local/lib -lconfig++ -lpqxx -lpq 

使用cmake编译程序?

+1

[如何添加 “-l”(ELL)编译器的CMake标志的可能的复制](https://stackoverflow.com/questions/43136418/how-to-add-l-ell-compiler-flag-in-cmake) – Tsyvarev

+0

我认为你需要先调用add_executable来创建目标,然后指定库与target_link_libraries。 – vre

回答

0

正确的解决办法是使用CMake的包PkgConfig使用pkg_search_module

您的文件将成为:

cmake_minimum_required(VERSION 2.8.9) 
project(DBHandler) 

find_package(PkgConfig REQUIRED) 

pkg_search_module(CONFIGPP REQUIRED config++) 
pkg_search_module(PQ REQUIRED pq) 
pkg_search_module(PQXX REQUIRED pqxx) 

include_directories(include ${CONFIGPP_INCLUDE_DIRS} ${PQ_INCLUDE_DIRS} ${PQXX_INCLUDE_DIRS}) 
file(GLOB SOURCES "src/*.cpp") 
target_link_libraries(dbhandler ${CONFIGPP_LIBRARIES} ${PQ_LIBRARIES} ${PQXX_LIBRARIES}) 
add_executable(dbhandler ${SOURCES}) 
+0

CMake错误/usr/share/cmake-3.7/Modules/FindPkgConfig.cmake:637(消息): 找不到所需的'pqxx'找到 由sudo apt-get install安装的库不是来源。也许,这是缺少findlib.cmake-s文件的问题? – user3455638

+0

你应该使用'sudo apt-get install \t libpqxx-dev'安装软件包'libpqxx-dev' – OlivierM

+0

它已经安装。 – user3455638