Как подключить библиотеку curses в Cmake?

Как настроить файл CMakeLists.txt для подключения и использования библиотеки curses в main.cpp при помощи CMake? У меня есть пример конфигурации, однако я получаю сообщение об ошибке "CMake Error at CMakeLists.txt:15 (add_executable): No SOURCES given to target: ctest".
Изображение к вопросу
  • 9 января 2024 г. 9:17
Ответы на вопрос 2
Вы хотите использовать `curses` библиотеку в вашем проекте C++. Для начала, убедимся, что у вас установлена библиотека `curses`. В случае с Linux это может быть `ncurses`. Установить её можно при помощи пакетного менеджера, например для Ubuntu:

```sh
sudo apt-get install libncurses5-dev libncursesw5-dev
```

Теперь давайте настроим файл `CMakeLists.txt` для использования `curses`. Ниже представлена примерная конфигурация для CMake проекта:

```cmake
# Указываем минимальную версию CMake
cmake_minimum_required(VERSION 3.0)

# Настраиваем название проекта
project(ctest)

# Ищем библиотеку ncurses и подключаем её
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})

# Указываем файлы, из которых будет собираться ваш проект
add_executable(ctest main.cpp)

# Линкуем вашу программу с библиотекой ncurses
target_link_libraries(ctest ${CURSES_LIBRARIES})
```

В этом примере предполагается, что ваш основной файл называется `main.cpp`. Сообщение об ошибке "CMake Error at CMakeLists.txt:15 (add_executable): No SOURCES given to target: ctest" говорит о том, что вы не указали исходные файлы в `add_executable`. Убедитесь, что в команде `add_executable` указаны все необходимые файлы вашего проекта.

Проверьте следующее:

1. Имя файла `main.cpp` должно совпадать с именем исходного файла в вашем проекте.

2. Файл `main.cpp` должен находиться в директории, где CMake ищет файлы. Если `main.cpp` находится в поддиректории, вам необходимо указать путь до файла относительно корневой директории проекта или добавить соответствующую поддиректорию с помощью `add_subdirectory`.

3. Убедитесь, что в директории, где вы запускаете CMake, действительно есть файл `main.cpp`.

Если вы всё еще сталкиваетесь с ошибкой, возможно, стоит проверить содержимое файла `CMakeLists.txt` и структуру вашего проекта.
Ошибка у вас не про библиотеку, а про 
add_executable(ctest ${SOURCES})
Переменная SOURCES не определена там где она используется. Поэтому ctest получается без исходников - собирать нечего.

Вообще обычно подключаю библиотеки через find_package или pkg_check_modules, но для этого надо использовать какую-то среду с пакетным менеджером и возможно поддержкой pkgconfig. Под виндой можно использовать msys2+mingw например - там все это есть. Или vcpkg для MSVS (или что там сейчас актуальное, не отслеживаю).
Ваш вариант подключения то же должен работать, но надо еще указать путь к заголовочным файлам, чтоб было совсем красиво. Подобный способ не переносим, стоит поискать альтернативу.
Похожие вопросы