【发布时间】:2018-04-05 03:28:30
【问题描述】:
我正在尝试将 SFML 作为依赖项包含在我的 CMake 项目中,它可以很好地编译 SFML,但我不知道如何链接它。
这是我的 CMakeLists.txt,带有带注释的 cmets:
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_link_libraries。找不到sfmlSFML 或SFML2。因此,我不确定如何链接它。
有人知道吗?
谢谢。
【问题讨论】:
-
SFML 不是一个单独的库,而是一组库,每个库都对应一些组件。库的目标命名为“sfml-
”。在您的代码中使用 SFML 时,您应该知道您使用了哪些 SFML 组件(请参阅 SFML 文档/教程)。 -
@Tsyvarev 它有效。你想让它成为一个答案吗?
标签: compilation cmake sfml