我正在尝试使用SFML和Box2D进行小型游戏。我有以下目录结构:
/
src/
game/ # my code
thirdparty/ # other libraries' code
box2d/
sfml/
bin/
etc...
我正在尝试设置它以便我可以运行make并且如果需要也可以编译box2d或sfml,因为我可能会对库进行一些更改。
我已经尝试将其放入我的CMkaeLists.txt:
find_package(Box2D)
find_package(sfml-window)
find_package(sfml-graphics)
find_package(sfml-system)
以及其他事情,但我一直在收到错误,我不知道如何解决它们。例如:
CMake Error at CMakeLists.txt:20 (find_package):
Could not find module Findsfml-window.cmake or a configuration file for
package sfml-window.
Adjust CMAKE_MODULE_PATH to find Findsfml-window.cmake or set
sfml-window_DIR to the directory containing a CMake configuration file for
sfml-window. The file will have one of the following names:
sfml-windowConfig.cmake
sfml-window-config.cmake
但我找不到它列出的任何文件。
答案 0 :(得分:0)
find_pacakge命令用于查找为cmake定义的包作为模块或配置。可能没有为这些库定义cmake模块或配置。因此,如果要使用find package命令查找这些库,则需要创建一个知道如何查找它们的cmake模块。鉴于您声明的要求,我不认为这是最简单的方法。
如果您静态链接库,则设置自定义目标以在每个库上调用make。将包含目录添加到包含路径。使用find_library命令查找库。
如果您打算动态链接您的库,那么创建一个自定义目标来构建和安装您的库,只要您将它们安装在一个普通的地方就应该很好。
答案 1 :(得分:0)
在这里有一个雄鹅:
http://www.itk.org/Wiki/CMake:How_To_Find_Libraries编写查找模块
查看“编写查找模块”部分。请务必一直阅读本文档。
如果您想制作可再发行和可移植的cmake项目,我认为这是您的正确方向。