C++ 向CMakeList添加第三方库

C++ 向CMakeList添加第三方库,c++,cmake,C++,Cmake,我正在尝试在arduino和运行Ubuntu14.04的计算机之间建立串行连接 我正在使用这个图书馆 有几个依赖项,我希望避免这些依赖项,因为我对此非常陌生,希望尽可能保持基本。显然,我不是唯一一个,项目负责人已经回答了这个问题 我在serial/examples/serial_example.cc中提供的示例中使用了CMakeLists.txt(由于限制,无法发布直接链接,但它是github) 这些是我采取的步骤 将上面的CMakeList.txt文件放入/serial/library,替

我正在尝试在arduino和运行Ubuntu14.04的计算机之间建立串行连接

我正在使用这个图书馆

有几个依赖项,我希望避免这些依赖项,因为我对此非常陌生,希望尽可能保持基本。显然,我不是唯一一个,项目负责人已经回答了这个问题

我在serial/examples/serial_example.cc中提供的示例中使用了CMakeLists.txt(由于限制,无法发布直接链接,但它是github)

这些是我采取的步骤

  • 将上面的CMakeList.txt文件放入/serial/library,替换原来的文件
  • 将serial_example.cc放入/serial/src/目录,并将其重命名为“my_program.cpp”
  • 打开gnome终端并导航到/serial/folder
  • 在终端执行“mkdir build”并输入该目录
  • 在终端执行“cmake../”
  • 在终端中执行“make”

    [66%]内置目标序列 链接CXX可执行文件my_程序 CMakeFiles/my_program.dir/src/my_program.cpp.o:在函数
    enumerate_port()中:
    my_program.cpp:(.text+0x32):对
    serial::list_ports()的未定义引用 collect2:错误:ld返回了1个退出状态 生成[2]:*[my_程序]错误1 make::[CMakeFiles/my_program.dir/all]错误2 make:**[全部]错误2

  • 我试着用sudo运行make,但没有成功

    这是“cmake../”之后的生成目录的内容


    经过一些搜索,我似乎遇到了类似的问题,如中所述,并使用Code::Blocks手动链接到已编译的libserial.so,在另一个目录中似乎可以工作,但是我想知道如何在没有Code::Blocks的情况下实现这一点,因为我需要将我的代码与另一个cmake项目合并

    为什么您认为使用sudo可以解决问题?如果您将
    CMakeLists.txt
    与原始文件进行比较,就会发现您没有编译包含缺少函数的
    list\u ports\u.cc
    。您是对的,Leiaz,这就是问题所在。显然,cpp示例是在cmake示例发布一年后发布的。我只是认为我在编译的时候做错了什么
    total 188
    -rw-rw-r-- 1 dundua dundua  12080 maj 24 13:49 CMakeCache.txt
    drwxrwxr-x 7 dundua dundua   4096 maj 24 13:51 CMakeFiles
    -rw-rw-r-- 1 dundua dundua   1630 maj 24 13:49 cmake_install.cmake
    -rw-rw-r-- 1 dundua dundua 162888 maj 24 13:49 libserial.a
    -rw-rw-r-- 1 dundua dundua   6837 maj 24 13:49 Makefile