Не удалось найти fltk (отсутствует: fltk_include_dir)

Я пытаюсь использовать в своем проекте библиотеку fltk, но у меня проблемы. Вот мой файл CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(pp)

set(CMAKE_CXX_STANDARD 14)


add_executable(pp main.cpp)

FIND_PACKAGE(FLTK REQUIRED)
FIND_PACKAGE(GTK REQUIRED)

TARGET_LINK_LIBRARIES(pp ${FLTK_LIBRARIES})
TARGET_LINK_LIBRARIES(pp ${GTK_LIBRARIES})

Версия FLTK: 1.3.4

Версия cmake: 3.7.2

Я установил библиотеку fltk в свои каталоги / usr / local

Включаемые файлы находятся в / usr / local / include / FL.

Я видел, что FindFLTK.cmake ищет следующие файлы: FL / Fl.h или FL / Fl.H, который находится в / usr / local / include / FL, чтобы его можно было найти.

Вот сообщение об ошибке:

Could NOT find FLTK (missing: FLTK_INCLUDE_DIR)

Есть ли у вас идеи по решению этой проблемы?

ОБНОВИТЬ

Текущая версия CMakeLists.txt

cmake_minimum_required(VERSION 3.7.2)
project(pp)

set(CMAKE_CXX_STANDARD 14)


add_executable(pp main.cpp)

target_include_directories(pp PRIVATE /usr/local/include/FL)

set (LIBRARIES fltk Xrender Xcursor Xfixes Xext Xft fontconfig Xinerama pthread dl m  X11)


message(STATUS mess: ${CMAKE_MODULE_PATH})

target_link_libraries(pp ${LIBRARIES})'

В этой конфигурации я могу скомпилировать и связать исполняемый файл, но почему конфигурация с FIND_PACKAGE не работает? Где мне искать ошибку?

Пожалуйста, покажите также точное сообщение об ошибке при нахождении FLTK.

Tsyvarev 26.10.2018 09:37

Вопрос обновлен.

bielu000 26.10.2018 09:47

Не говоря уже об очевидном, но пробовали ли вы установить FLTK_INCLUDE_DIR?

PeterT 26.10.2018 10:04

@PeterT: переменная FLTK_INCLUDE_DIR описана в модуле FindFLTK.cmake как переменная результат, но не как переменная, которая может быть назначена пользователем. Поэтому НЕ следует устанавливать FLTK_INCLUDE_DIR явно. (Такая установка может быть проигнорирована, может сломать скрипт, может работать, но только для определенных версий, ... - другими словами, установка переменной приводит к неопределенное поведение).

Tsyvarev 26.10.2018 12:52

Вопрос обновлен.

bielu000 27.10.2018 12:36

В рабочем примере каталог include /usr/local/include/FL выглядит подозрительно. Обычно общесистемная установка размещает свои заголовки определенным образом, поэтому /usr/local/include можно использовать в качестве подключаемого каталога. Что такое точный путь для файла Fl.h, /usr/local/include/FL/FL/Fl.h или /usr/local/include/FL/Fl.h?

Tsyvarev 27.10.2018 20:22

Второй - /usr/local/include/FL/Fl.H

bielu000 28.10.2018 14:33
1
7
1 359
1

Ответы 1

Возможно плохая установка библиотеки. Я только что установил новый из источников GitHub с настройкой CMake с помощью cmake -G "MinGW Makefiles" . с последующими make и make install, чтобы установить его в библиотеке компилятора, я полагаю.

После этого ошибки, содержащие Could NOT find FLTK (missing: FLTK_INCLUDE_DIR), исчезли при компиляции другого проекта. Полагаю, отчет об ошибке cmake не такой строгий и ясный, т.е. эта ошибка означает какое-то исключение в FindFLTK.cmake, а не совсем об отсутствии FLTK_INCLUDE_DIR.

Другие вопросы по теме