如何告诉CMake对库链接可执行文件

How to tell CMake to link executable against library?

本文关键字:链接 可执行文件 何告诉 CMake      更新时间:2023-10-16

我的源代码树是

  • CMakeLists.txt
    • 演示
      • CMakeLists.txt
      • 来源、头。
    • 图书馆
      • CMakeLists.txt
      • 来源,头。

Demo是可执行文件通过add_executable()图书馆显然就是图书馆。这两者是如何联系在一起的?

因为现在我正在使用target_link_libraries(演示库),但我得到错误:LNK2019,我认为这是由于链接不成功造成的。

任何想法?

谢谢。

edit:在根目录CMakeLists.txt上,这两个被添加为-> add_subdirectory(Library) add_subdirectory(Demo)。

edit2:
Demo CMakeLists

add_executable(Demo ${Headers}
                    ${Source})
target_link_libraries(Demo ${blahblah}
                           ${Library})
图书馆CMakeLists

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

这是不正确的:

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

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

使用:

target_link_libraries(Demo ${blahblah}
                               Library)

让CMake知道你引用的是目标库而不是变量。

在上面的例子中,Library是一个目标名称,而不是一个变量。当你将它链接到你的可执行文件时,使用target_link_libraries(Demo Library) ('Library'周围没有'${}')