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

标签 c++ makefile cmake ubuntu-18.04

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

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

  2. 导入的 proxy.h : #include

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

尝试构建时出现错误 对“px_proxy_factory_new”的 undefined reference

我的问题:我是否在将 libproxy 链接到 cmake 项目的方式上犯了错误?我必须添加/更改我的 CMakeLists.txt 吗?

最佳答案

简答

您错过了向您的项目添加正确的依赖关系。我假设您必须在 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"编译我的程序了。 && 制作

关于c++ - 如何将 libproxy-dev 链接到现有的 cmake 项目(C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57545412/

相关文章:

c++ - Clang 未在 -g 标志上生成调试信息

qt - 为什么库名称在其名称中多了一个 0?

Makefile(不区分大小写的目标)

c++ - 如何用Cmake获取libasan.so路径?

gcc - 使用 Cmake 构建 Android NDK 项目

c++ - 尝试编译简单测试程序时 CMake 失败

c++ - 通过 Winsocks 发送一个 int 数组

c++ - 为什么我能够创建一个仅在运行时知道大小的数组?

c++ - 用于函数调用的带有可变参数模板的模板类型推导

makefile - 强制 Makefile 中的依赖顺序