CMake — Attachment.h: нет такого файла или каталога

./dir/
├── bot_example
│   ├── CMakeLists.txt
│   └── example0.cpp
├── CMakeLists.txt
├── README.md
└── sleepy_discord
├── attachment.cpp
├── attachment.h
├── channel.cpp
├── etc...

Я делаю рефакторинг проекта, который был чисто визуальной студией, в CMake, чтобы сделать его кроссплатформенным. Я не очень опытен в CMake, однако эта структура работала в тестовом проекте до конца отладки проблемы. Не удается включить первый файл заголовка (attachment.h, и я не могу заставить его распознать его. Я искал другие ответы с той же проблемой, но безрезультатно. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: я должен упомянуть, что это работает под окнами, поэтому я запутался и обращаюсь к Stack Exchange.

Верхний уровень CMakeLists.txt

# Project Initialization
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
Project("Sleepy-Discord")

# Component Initialization
add_subdirectory(sleepy_discord)
add_subdirectory(bot_example)

./sleepy_discord/CMakeLists.txt

# Initialize API
cmake_minimum_required(VERSION 3.5)

set(Boost_USE_STATIC_LIBS     ON)
set(Boost_USE_MULTITHREADED   ON)
set(Boost_USE_STATIC_RUNTIME  OFF)
SET(BOOST_MIN_VERSION "1.58.0")
FIND_PACKAGE(Boost ${BOOST_MIN_VERSION} REQUIRED)

FIND_PACKAGE(CURL)

SET (sleepy_discord_SOURCES
./attachment.cpp
./attachment.h

./channel.cpp
./channel.h

./client.cpp
./client.h

./common.cpp
./common.h

./default_functions.cpp

./discord_object_interface.cpp
./discord_object_interface.h

./embed.cpp
./embed.h

./error.h

./experimental.cpp
./experimental.h

./json.c
./json.h

./json_wrapper.cpp

./message.cpp
./message.h

./sd_error.cpp

./server.cpp
./server.h

./sleepy_discord.h

./user.cpp
./user.h
)

if(Boost_FOUND)
add_library(sleepy_discord ${sleepy_discord_SOURCES})
target_include_directories(sleepy_discord INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>""$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>""$<BUILD_INTERFACE:${Boost_INCLUDE_DIRS}>""$<BUILD_INTERFACE:${CURL_INCLUDE_DIR}>""$<BUILD_INTERFACE:>${OPENSSL_INCLUDE_DIR}""$<BUILD_INTERFACE:>${CPR_INCLUDE_DIR}")
else()
message(STATUS "Boost library not found.")
endif()

./bot_example/CMakeLists.txt

# Initialize Bot
cmake_minimum_required(VERSION 3.5)

set(bot_example_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/example0.cpp
)

add_executable(bot_example ${bot_example_SOURCES})
target_link_libraries(bot_example sleepy_discord)

Терминальный выход:

Scanning dependencies of target sleepy_discord
[  5%] Building CXX object sleepy_discord/CMakeFiles/sleepy_discord.dir/attachment.cpp.o
/home/bleugamer/Development/bots/sleepy_discord/sleepy_discord/attachment.cpp:1:24: fatal error: Attachment.h: No such file or directory
compilation terminated.
sleepy_discord/CMakeFiles/sleepy_discord.dir/build.make:62: recipe for target 'sleepy_discord/CMakeFiles/sleepy_discord.dir/attachment.cpp.o' failed
make[2]: *** [sleepy_discord/CMakeFiles/sleepy_discord.dir/attachment.cpp.o] Error 1
CMakeFiles/Makefile2:85: recipe for target 'sleepy_discord/CMakeFiles/sleepy_discord.dir/all' failed
make[1]: *** [sleepy_discord/CMakeFiles/sleepy_discord.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

0

Решение

В Unix-подобных системах (точнее, в EXT, UFS и других файловых системах Unixy), доступ к файлам чувствителен к регистру. + Изменить

#include "Attachment.h"

в

#include "attachment.h"
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]