将cmake用于具有子/外部项目/依赖项的项目

时间:2016-03-21 03:48:34

标签: c++ cmake

我实际上正在通过一个项目来改进我的c ++技能,该项目使用PocoProject作为框架来提供简单的休息网络服务器和json解析以及mongodb驱动程序。

我正在使用cmake / make

编译我的项目

我的目录结构是:

root
 - pocoproject
 - helloworld.cpp
 - CMakeLists.txt

为了测试cmake,我有一个简单的cpp文件(取自poco示例),它启动了一个http服务器。包括以下内容:

#include "Poco/Net/HTTPServer.h"
#include "Poco/Net/HTTPRequestHandler.h"
...
#include "Poco/Util/HelpFormatter.h"
#include <iostream>

我的CMakeLists.txt看起来像:

cmake_minimum_required (VERSION 2.6)
project (Hello)
add_executable(Hello helloworld.cpp)

问题:

如何将pocoproject所需的库添加到我的可执行文件中?如何正确引用标题?

1 个答案:

答案 0 :(得分:2)

您需要让您的CMake项目知道在哪里寻找依赖项,例如Poco。您需要设置变量CMAKE_PREFIX_PATH。可以使用cmake-gui或在命令行上完成:

cmake ... -DCMAKE_PREFIX_PATH=<path> ...

<path>是您复制或安装Poco库的地方,因此Poco标题将包含<path>/include/Poco/AbstractCache.h等路径......,<path>/lib/libPocoFoundation.*等库,最重要的是,必须在<path>/lib/cmake/Poco/PocoConfig.cmake找到config-module。

CMakeLists.txt中,您需要找到包含

的Poco包
find_package(Poco REQUIRED Foundation Util Net)

并通过

链接到它
target_link_libraries(Hello Poco::Foundation Poco::Util Poco::Net)