Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compilation 在CMake中链接SFML,从源代码编译_Compilation_Cmake_Sfml - Fatal编程技术网

Compilation 在CMake中链接SFML,从源代码编译

Compilation 在CMake中链接SFML,从源代码编译,compilation,cmake,sfml,Compilation,Cmake,Sfml,我试图将SFML作为依赖项包含在我的CMake项目中,它可以很好地编译SFML,但我不知道如何链接它 这是我的CMakeLists.txt,附带注释: cmake_minimum_required(VERSION 3.9.1) set(CMAKE_LEGACY_CYGWIN_WIN32 1) set (CMAKE_CXX_STANDARD 11) # Set C++11 project(CHIP8) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINA

我试图将SFML作为依赖项包含在我的CMake项目中,它可以很好地编译SFML,但我不知道如何链接它

这是我的CMakeLists.txt,附带注释:

cmake_minimum_required(VERSION 3.9.1)
set(CMAKE_LEGACY_CYGWIN_WIN32 1)
set (CMAKE_CXX_STANDARD 11) # Set C++11
project(CHIP8)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # static library
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # dynamic library
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # executables
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/modules" ${CMAKE_MODULE_PATH})

# Include SFML
add_subdirectory(${CMAKE_SOURCE_DIR}/dep/SFML)
include_directories(${CMAKE_SOURCE_DIR}/dep/SFML/include)

#Include where to find headers
include_directories(./src)
include_directories(./src/headers)

# Do a GLOB search, and add them to executable
set(EXECUTABLE_NAME "CHIP8")
file(GLOB SRC_FILES
    "src/headers/*.h"
    "src/*.cpp"
)

add_executable(${EXECUTABLE_NAME} ${SRC_FILES})
target_link_libraries(${EXECUTABLE_NAME} SFML) #Here is where the problem lies!
如您所见,我正在添加子目录
/dep/SFML
,以便它使用自己的CMakeLists进行编译。在下一行中也包括头,VSCode将拾取该行

但是,我在最后一行遇到了问题:
target\u link\u libraries
。它找不到
sfml
sfml
SFML2
。因此,我不知道如何链接它

有人知道吗


谢谢。

SFML不是单个库,而是一组库,每个库对应于某个组件。对于名为

<component-name>

库目标已命名

sfml-<component-name>
sfml-
在代码中使用SFML时,您应该知道使用了哪些SFML组件(请参阅SFML文档/教程),并链接相应的库:

# Assuming you use "graphics" and "system" SFML components
target_link_libraries(<your-executable> sfml-graphics sfml-system)
#假设您使用“图形”和“系统”SFML组件
目标链接库(sfml图形sfml系统)

请注意,此类目标的命名没有正式记录,因此可以在将来更改

使用SFML链接的首选方法是在配置项目之前(或期间)安装它,并使用

find_package(SFML REQUIRED COMPONENTS graphics system)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(<your-executable> ${SFML_LIBRARIES})
find_包(SFML必需组件图形系统)
include_目录(${SFML_include_DIR})
目标链接库(${SFML\u库})

SFML不是单个库,而是一组库,每个库对应于某个组件。库的目标命名为“sfml-”。在代码中使用SFML时,应该知道使用了哪些SFML组件(请参阅SFML文档/教程)。@Tsyvarev它可以工作。你想回答这个问题吗?