Возникли проблемы при настройке CMake для работы со сторонними библиотеками - PullRequest
2 голосов
/ 03 апреля 2011

Я пытаюсь сделать небольшую игру, используя как 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 голосов
/ 12 февраля 2013

Есть гусак здесь:

http://www.itk.org/Wiki/CMake:How_To_Find_Libraries Написание модулей поиска

Взгляните на раздел «Написание модулей поиска». Обязательно прочитайте документ полностью.

Если вы хотите создавать распространяемые и переносимые проекты cmake, я думаю, что это правильное направление для вас.

0 голосов
/ 04 апреля 2011

Команда find_pacakge предназначена для поиска пакетов, которые определены для cmake как модули или конфигурации.Вероятно, для этих библиотек не определен модуль или конфиг cmake.Итак, если вы хотите использовать команду find package для поиска этих библиотек, вам нужно будет создать модуль cmake, который знает, как их найти.Учитывая ваши заявленные требования, я не думаю, что это самый простой способ сделать это.

Если вы статически связываете свои библиотеки, установите настраиваемую цель для вызова make для каждой из библиотек.Добавьте каталоги включения в свой путь включения.Используйте команду find_library для поиска библиотек.

Если вы намереваетесь динамически связывать свои библиотеки, создайте пользовательскую цель для сборки и установки своих библиотек, и у вас все будет хорошо, если вы устанавливаете их в одном из обычных мест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...