2013-11-26 3 views
1

У меня есть проект со следующей структурой:CMake - поиск внешних библиотек

projectName-master/ 
        data/ 
        source/ 
        thirdparty/ (here is placed FindSFML.cmake file) 
        .gitignore 
        CMakeLists.txt 
        README.md 
        SOURCES.md 
        TODO.md 

Я использую CMake 2.8.11.1 (CMake-GUI) для создания Visual Studio SLN файла. Дорожки устанавливаются таким образом:

  • где находится исходный код: E:/Projectname-мастер
  • где строить двоичные файлы: E:/Projectname-мастер/источник (1.Can выбрать другой каталог или он должен быть установлен в каталог, который содержит исходные файлы: h, cpp и т. д.?)

Далее я выбираю: Configure -> «Указать генератор для этого проекта = Visual Studio 11, Использовать собственные компиляторы по умолчанию» - > Отделка

Затем я получаю информацию: ошибка в процессе настройки, проект Файлы могут быть неправильными

Cmake Gui содержит следующие сведения:

Имя: CMAKE_INSTALL_PREFIX Значение C:/Program Files (x86)/Projectname Имя: SFML_INCLUDE_DIR Значение SFML_INCLUDE_DIR-NOTFOUND

CMake Error at thirdparty/FindSFML.cmake:165 (message): 
    Could NOT find SFML (missing: SFML_SYSTEM_LIBRARY SFML_WINDOW_LIBRARY 
    SFML_AUDIO_LIBRARY SFML_NETWORK_LIBRARY SFML_GRAPHICS_LIBRARY) 
Call Stack (most recent call first): 
    CMakeLists.txt:63 (find_package) 

Я загрузил SFML и установил SFML_INCLUDE_DIR (в CMake Gui): C: /OpenGL/SFML-2.1/include/SFML, но я все еще получаю эту ошибку. 2. Как это исправить? Как насчет файлов lib и dll?

Edit1: Я скачал SFML из official site

FindSFML.cmake из проекта не содержит записи SFML_ROOT, но SFML_INCLUDE_DIR выглядит следующим образом:

# find the SFML include directory 
find_path(SFML_INCLUDE_DIR SFML/Config.hpp 
     PATH_SUFFIXES include 
     PATHS 
     ${SFMLDIR} 
     $ENV{SFMLDIR} 
     ~/Library/Frameworks 
     /Library/Frameworks 
     /usr/local/ 
     /usr/ 
     /sw   # Fink 
     /opt/local/ # DarwinPorts 
     /opt/csw/ # Blastwave 
     /opt/) 

Так как установить SFML_ROOT? Нужно ли добавлять некоторые записи (записи) к этому файлу? Как это будет выглядеть?

Edit2: Часть новой FindSFML.cmake с пути к SFML (C: /OpenGL/SFML-2.1/)

find_path(SFML_INCLUDE_DIR SFML/Config.hpp 
     PATH_SUFFIXES include 
     PATHS 
     ${SFML_ROOT} 
     $ENV{SFML_ROOT} 
     C:/OpenGL/SFML-2.1/ 
     ~/Library/Frameworks 
     /Library/Frameworks 
     /usr/local/ 
     /usr/ 
     /sw   # Fink 
     /opt/local/ # DarwinPorts 
     /opt/csw/ # Blastwave 
     /opt/) 

ответ

1

Прежде всего, SFML не является стандартным модулем CMake, поэтому было бы неплохо предоставить ссылку на источники. Надеюсь, вы имеете в виду this product. Посмотрите на файл FindSFML:

# If SFML is not installed in a standard path, you can use the SFML_ROOT CMake (or environment) variable 
# to tell CMake where SFML is. 

Таким образом, вы, вероятно, просто нужно установить SFML_ROOT переменную, но не SFML_INCLUDE_DIR.

Что относительно файлов lib и dll?

Я думаю, что это может быть полезно:

# By default, the dynamic libraries of SFML will be found. To find the static ones instead, 
# you must set the SFML_STATIC_LIBRARIES variable to TRUE before calling find_package(SFML ...). 

Могу ли я выбрать другой каталог или он должен быть установлен в каталог, который содержит исходные файлы: ч, каст и т.д.

Настоятельно рекомендуется use a separate directory.

+0

Пожалуйста, см. Edit1 – Irbis

+0

Я добавил в проект новое приложение FindSFML.cmake с пути к SFML - Edit2. Это то, что вы имели ввиду ? – Irbis

+0

Но как и где я должен определить SFML_ROOT? Я использую CMake-Gui. – Irbis

Смежные вопросы