如何告诉CMake将可执行文件链接到库?

时间:2016-10-14 16:48:40

标签: c++ cmake

我的源代码树是

  • 的CMakeLists.txt
    • 演示
      • 的CMakeLists.txt
      • source,headers。
      • 的CMakeLists.txt
      • 来源,标题。

因此Demo是使用add_executable()完成的可执行文件 和图书馆显然是图书馆。如何将这两者联系在一起?

因为我现在正在使用target_link_libraries(演示库),但我收到错误:LNK2019我认为是由于没有成功链接引起的。

有什么想法吗?

感谢。

编辑:在根CMakeLists.txt上,这些2被添加为 - > add_subdirectory(Library)add_subdirectory(Demo)。

EDIT2:
  演示CMakeLists

add_executable(Demo ${Headers}
                    ${Source})

target_link_libraries(Demo ${blahblah}
                           ${Library})

图书馆CMakeLists

add_library(Library blahblah.cpp
                    blahblah.h
                    foo.cpp
                    foo.h)

2 个答案:

答案 0 :(得分:3)

这是不正确的:

target_link_libraries(Demo ${blahblah}
                           ${Library})

你所说的是使用名为Library的字符串变量,它不会存在。

使用:

target_link_libraries(Demo ${blahblah}
                               Library)

以便CMake知道您正在引用目标"图书馆"而不是变量。

答案 1 :(得分:0)

在上面的示例中,Library是目标名称,而不是变量。当您将其与可执行文件相关联时,请使用target_link_libraries(Demo Library)(“图书馆”周围没有“$ {}”。