如何将libproxy开发与现有的cmake项目(C+;+;)链接? 我不是C++编码专家。有一个任务,我必须使用“libproxy dev”自动检测代理

如何将libproxy开发与现有的cmake项目(C+;+;)链接? 我不是C++编码专家。有一个任务,我必须使用“libproxy dev”自动检测代理,c++,makefile,cmake,ubuntu-18.04,C++,Makefile,Cmake,Ubuntu 18.04,在我的ubuntu 18系统中安装了“libproxy dev”: sudo apt get安装libproxy dev 导入的代理.h:#包括 试图创建pxProxyFactory的对象 pxProxyFactory*pf=px_proxy_factory_new() 尝试生成时出错 未定义对“px\U代理\U工厂\U新”的引用 我的问题:我在如何将libproxy链接到cmake项目上犯了错误吗?我必须添加/更改我的CMakeLists.txt吗?简短回答 您无法将正确的部门添加到项目中。我

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

  • 导入的代理.h:#包括

  • 试图创建pxProxyFactory的对象 pxProxyFactory*pf=px_proxy_factory_new()
  • 尝试生成时出错 未定义对“px\U代理\U工厂\U新”的引用


    我的问题:我在如何将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;
    }
    
    现在运行
    cmake-G“Unix生成文件”&&make
    ,我会收到与您相同的错误消息:
    main.cpp:(.text+0x38):未定义对“px\u代理\u工厂\u新”的引用。

    现在在最后添加
    target\u link\u库时
    ,我可以编译我的小程序:

    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”编译我的程序了制作

    这些链接可能会有所帮助:,“我必须添加/更改我的CMakeLists.txt吗?”-如果不查看它,很难说你的
    CMakeLists.txt有什么问题……是的,但通常需要做什么样的更改?假设我们有一个新项目,我们唯一想做的就是在这个新项目中创建上面提到的对象。我们的CMakeLists.txt应该是什么样子?您需要链接到您使用的库。在CMake中,这是通过命令执行的。几乎所有的CMake教程都描述了如何链接。请注意,
    libproxy dev
    是一个包名,而不是库。库名为
    libproxy
    ,在有关使用此库的指南中应明确指出这一点。
    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)