c++ - 无法在 CLion 项目中包含 SFML 头文件

标签 c++ cmake header-files clion

总的来说,我对 CMake 和 C++ 还很陌生,所以今天我尝试将外部库(如 SFML)导入到我在 Jetbrain 的 IDE CLion 中的项目中,但没有成功。

在花了一整天的时间学习 CMake 的一般知识并使 SFML 与 CMake 协同工作之后,我终于管理了我项目的 CMake 以找到 SFML 库文件。
但是,当我处理自己的头文件以包含 SFML 头文件时,我遇到了一个问题,因为它没有从库中找到任何头文件——我指的是 #include 指令。
由于我是新手,所以我在这里很迷路。

这是我的 CMakeLists.txt 文件:

# Set CMake's minimum required version
cmake_minimum_required(VERSION 3.5)

set(CMAKE_VERBOSE_MAKEFILE on)

#Set CMake's project name
project(testproj)

include_directories("${PROJECT_BINARY_DIR}")

#Set CMake's flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

#Set source files
set(SOURCE_FILES Animal.cpp Animal.hpp ConstantValues.hpp Enums.hpp Mamal.hpp Mammals/Lion.cpp Mammals/Lion.hpp)
add_library(testproj SHARED ${SOURCE_FILES})

#Set CMake's module path to find the SFML Lib
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Modules/" ${CMAKE_MODULE_PATH})
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\SFML\\SFML-2.3.2")

#Find the SFML lib
find_package(SFML 2 REQUIRED audio)
if (SFML_FOUND)
    include_directories(${SFML_INCLUDE_DIR})
    target_link_libraries(testproj ${SFML_LIBRARIES})
endif (SFML_FOUND)

值得注意的是,我在 Windows 上工作,我只查找 SFML 中的音频模块。
我错过了什么?

最佳答案

好吧,感谢@Tsyvarev 的帮助,我已经成功完成了这项工作。 当我意识到问题只与#include 指令有关,与 CMake 脚本无关时,我对其进行了更深入的研究,发现与 SFML 的官方文档相反,每个模块的头文件位于 下他们的匹配目录

例如,要从音频模块中包含一个头文件,我应该这样做:

#include <SFML/Audio/sound.hpp>

这里的关键是首先查看 SFML 文件夹,就像使用 boost 一样。

关于c++ - 无法在 CLion 项目中包含 SFML 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809049/

相关文章:

c++ - “struct _ntl_gbigint_body”在哪里定义?

c++ - 如何(可移植地)在 C 和 C++ 中获取 DBL_EPSILON

c++ - TBB parallel_for 线程池

c++ - 对 `uuid_generate@UUID_1.0' 的 undefined reference

c++ - 如何使用 Homebrew 软件、cMake 和 cLion 将库添加到 C++ 项目

使用带有 gcc 和自排序列表的 .h 文件进行编译

c - 函数的隐式声明

c++ - 如何在MFC中的静态文本控件上插入图标?

c - 如何在一个文件中定义变量并在另一个文件中使用它

c++ - cmake 更新缓存变量