使用 SFML 库构建 CMake 项目

2023-11-30

我不明白如何使用构建 SFML 项目CMakeLists.txt file.
如果你有时间的话,请帮帮我。谢谢你!)

Details

我从官方网站下载了 SFML 库(https://www.sfml-dev.org/index.php),将其移至我的项目根目录(参见下面的屏幕截图),使用 SFML 编写 C++ 代码并输入此内容cmake-命令:

.../test_proj> cmake -G "Ninja" .

但在控制台输出中我得到了这个:

CMake Warning at subdir_02/CMakeLists.txt:5 (find_package):
  By not providing "FindSFML.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "SFML", but
  CMake did not find one.

  Could not find a package configuration file provided by "SFML" with any of
  the following names:

    SFMLConfig.cmake
    sfml-config.cmake

  Add the installation prefix of "SFML" to CMAKE_PREFIX_PATH or set
  "SFML_DIR" to a directory containing one of the above files.  If "SFML"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/tim/Documents/c-c++/test_proj

CMakeLists.txt:

add_executable(subdir_02 main.cpp)

set(SFML_STATIC_LIBRARIES TRUE)

find_package(SFML COMPONENTS window graphics system)

target_compile_features(subdir_02 PUBLIC cxx_std_17)
target_compile_definitions(subdir_02 PRIVATE SFML_STATIC)

target_link_libraries(subdir_02 ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})

这是使用 SFML 的主要 C++ 文件(位于项目子文件夹中)。
.../test_proj/subdir_02/main.cpp:

#include <SFML/Graphics.hpp>

int main() {
    sf::RenderWindow app(sf::VideoMode(800, 600, 32), "Hello World - SFML");

    return 0;
}

截图

项目根文件夹截图

SFML文件夹截图

main.cpp-源文件夹


当你有一个愚蠢的规则时CMakeLists.txt其中发现依赖关系find_package():将其安装文件夹添加到CMAKE_PREFIX_PATH在调用CMake配置时。

在您的情况下,项目的 CMake 配置应该是:

cmake -S . -B build_release -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:\Users\tim\Documents\c-c++\test_proj\SFML" -G "Ninja"

事实上,SFML 包提供了一个 CMake 配置文件SFMLConfig.cmake在子目录中。这是一个可能的文件find_package(SFML)正在努力寻找。 CMake 无法知道该文件在哪里,因此它会查找列出的每个路径下的一些特定子目录CMAKE_PREFIX_PATH,以及最终的一些标准系统路径。 实际上搜索过程可能非常复杂(https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure),但对于本机构建CMAKE_PREFIX_PATH是你的朋友。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SFML 库构建 CMake 项目 的相关文章

随机推荐