无法让CMake与第三方库合作

时间:2011-04-03 19:22:54

标签: cmake

我正在尝试使用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

但我找不到它列出的任何文件。

2 个答案:

答案 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项目,我认为这是您的正确方向。