总的来说,我对 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/