首页 文章

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

提问于
浏览
2

我的源代码树是

  • CMakeLists.txt

  • 演示

  • CMakeLists.txt

  • 来源, Headers .

  • 图书馆

  • CMakeLists.txt

  • 来源, Headers .

因此,Demo是使用add_executable()完成的可执行文件,而Library显然是库 . 这些2如何联系在一起?

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

有任何想法吗?

谢谢 .

编辑:在根CMakeLists.txt上,将这两个添加为 - > add_subdirectory(Library)add_subdirectory(Demo) .

EDIT2:
Demo CMakeLists

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

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

Library CMakeLists

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

2 回答

  • 0

    这是不正确的:

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

    你要说的是使用名为Library的字符串变量,它不存在 .

    使用:

    target_link_libraries(Demo ${blahblah}
                                   Library)
    

    这样CMake就会知道你引用了目标“库”而不是变量 .

  • 3

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

相关问题