我正在尝试在我的项目中使用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
现在我想将它们链接到我的二进制文件中,就像这样:
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为什么要尝试使用系统库而不是刚刚构建的库,我该如何解决这个问题?
add_subdirectory(SFML) add_subdirectory(src)
我可以在构建日志中看到库的名称:链接 CXX 共享库 ../../../lib/libsfml-graphics.so
等等。 - Tommallasfml-system
已知的目标,那么显然你不能说“链接到该目标!”。不过你可以添加额外的链接目录(即要搜索库的目录),请参见例如http://www.cmake.org/pipermail/cmake/2011-May/044295.html。 - Baum mit Augenlink_directories
,但是这个问题的简单答案是“使用link_directories(<库所在位置>)
”。OP应该将路径表达为${CMAKE_BUILD_DIR}/buildSubDirectory
。 - Antoniolink_directories
是可以的。但是也许应该仔细检查一下,看看是否存在我现在想不到的陷阱。 - Baum mit Augen