Включение внешних заголовков в файлы заголовков в CMake

#c #cmake

Вопрос:

Я пытаюсь изучить CMake, создав небольшое приложение с использованием CMake и SFML в Visual Studio. Тем не менее, у меня возникают трудности с указанием моих .hpp файлов туда, где находятся мои заголовки SFML. Похоже, что CMake не рассматривает файлы заголовков в качестве целевых объектов, поэтому он не добавляет эти внешние каталоги включения в мои заголовки. Поэтому я не могу использовать модули SFML в своих заголовках для определения классов и тому подобного. Вот мой CMakeLists.txt

 cmake_minimum_required(VERSION 3.10)

project(Euclid)

set(SFML_INCLUDE_DIR "C:\Program Files (x86)\SFML\include")
set(SFML_LIBRARY_DIR "C:\Program Files (x86)\SFML\lib")

set(SRC
        ${PROJECT_SOURCE_DIR}/Block.cpp
        ${PROJECT_SOURCE_DIR}/Block.hpp
        ${PROJECT_SOURCE_DIR}/Main.cpp
)

add_executable(Main ${SRC})

target_include_directories(Main PUBLIC ${SFML_INCLUDE_DIR})
target_link_libraries(Main PUBLIC ${SFML_LIBRARY_DIR})
 

Комментарии:

1. » это не добавление этих внешних каталогов включения в мои заголовки «. Что именно это значит? Файлы заголовков никогда не создаются изолированно, поэтому какой файл cpp на самом деле не работает? Пожалуйста, покажите точный журнал сборки и ошибки.

2. Вы должны использовать find_package , затем вы можете просто перейти по ссылке на цель smfl, а cmake сделает все остальное

3. Когда я пытаюсь #include <SFML/Graphics.hpp> в Block.hpp Visual Studio, он говорит, что не может загрузить файл. Но это работает в cpp файлах.