如何将 libproxy-dev 链接到现有的 cmake 项目(C++)?

How to link libproxy-dev to existing cmake project(C++)?

本文关键字:项目 cmake C++ libproxy-dev 链接      更新时间:2023-10-16

我不是C++编码专家。有一个任务,我必须使用"libproxy-dev"来自动检测代理。

  1. 在我的 Ubuntu 18 系统中安装了"libproxy-dev":sudo apt-get install libproxy-dev

  2. 导入代理.h :#include

  3. 尝试创建 pxProxyFactory 的对象pxProxyFactory *pf = px_proxy_factory_new((;

尝试构建时出现错误对"px_proxy_factory_new"的未定义引用

我的问题:我在如何将 libproxy 链接到 cmake 项目方面做错了吗?我必须添加/更改我的 CMakeLists.txt吗?

简答

您错过了向项目添加正确的 dependency 的机会。我假设您必须将这样的命令添加到您的CMakeLists.txt中:

target_link_libraries(your_target_name proxy)

长答案

我用这个内容创建了一个main.cpp

#include <iostream>
#include <proxy.h>
int main(int argc, char **argv)
{
std::cout << "Hi" << std::endl;
pxProxyFactory *px = px_proxy_factory_new();
return 0;
}

然后我用这个内容创建了一个CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(proxy_ex1)
set(MY_SOURCES main.cpp)
add_executable(${PROJECT_NAME} ${MY_SOURCES})

现在运行cmake -G "Unix Makefiles" . && make时,我收到与您相同的错误消息:main.cpp:(.text+0x38): undefined reference to 'px_proxy_factory_new'

现在在末尾添加target_link_libraries时,我可以编译我的小程序:

cmake_minimum_required(VERSION 3.10)
project(proxy_ex1)
set(MY_SOURCES main.cpp)
add_executable(${PROJECT_NAME} ${MY_SOURCES})
target_link_libraries(${PROJECT_NAME} proxy)

现在我可以使用cmake -G "Unix Makefiles" . && make编译我的程序