gpt4 book ai didi

c++ - 子目录中的CMake链接库

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:55 25 4
gpt4 key购买 nike

我正在尝试在我的项目中包含 SFML 源代码。我的目录布局如下:

main
SFML (subtree synced with the official git repo)
src
<various modules>
General (here lies the binary)

从主级别开始,我首先添加 SFML 子目录,然后添加 src。正如我在查看构建日志时看到的那样,这会生成库:

sfml‑system
sfml‑window
sfml‑network
sfml‑graphics
sfml‑audio
sfml‑main

现在我想像这样将它们链接到 General 目录中的二进制文件:

add_executable(main ${main_SRCS})
target_link_libraries (main
sfml‑system
sfml‑window
sfml‑network
sfml‑graphics
sfml‑audio
sfml‑main
# Other stuff here
)

但是我得到:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lsfml‑system
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lsfml‑window
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lsfml‑network
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lsfml‑graphics
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lsfml‑audio
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lsfml‑main

为什么 CMake 尝试使用系统库而不是它刚刚构建的库,我该如何解决这个问题?

最佳答案

这应该可以正常工作。

在 CMake 3.2 上使用 Windows 上的 Visual Studio 生成器和 Linux 上的 Makefile 生成器尝试了以下操作:

cmake_minimum_required(VERSION 2.8)

project(test)

add_subdirectory(SFML-2.2)

add_executable(foo bar.cpp)
target_link_libraries(foo sfml-system)

SFML 构建正确,foo 正确链接到 sfml-system

您从另一个子目录构建可执行文件这一事实不应影响此处。

关于c++ - 子目录中的CMake链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30030885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com