我目前正在尝试配置我的Cmake文件以包含SFML库.我的CMakeLists.txt.如果重要的话,我正在使用OS X Yosemite.
cmake_minimum_required(VERSION 2.8.4)
project(SFMLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=lib++")
set(SOURCE_FILES main.cpp)
add_executable(SFMLTest ${SOURCE_FILES})
#Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Users/Home/SFML-2.2-osx-clang-universal/cmake/Modules" ${CMAKE_MODULE_PATH})
find_package(SFML 2.2 REQUIRED system window graphics network audio)
if (SFML_FOUND)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(${main.cpp} ${SFML_Libraries})
endif()
Run Code Online (Sandbox Code Playgroud)
而我目前得到的错误是
Error: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 notfind one.
Could not find a package configuration file provided by "SFML" (requested version 2.2)
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.
Run Code Online (Sandbox Code Playgroud)
我的FindSFML.cmake位于
/Users/Home/SFML-2.2-osx-clang-universal/cmake/Modules
Run Code Online (Sandbox Code Playgroud)
您的问题是查找模块的完整路径
/Users/Home/SFML-2.2-osx-clang-universal/cmake/Modules/FindSFML.cmake
Run Code Online (Sandbox Code Playgroud)
但是你要加入${CMAKE_SOURCE_DIR}/Users/Home/SFML-2.2-osx-clang-universal/cmake/Modules你的CMAKE_MODULE_PATH.${CMAKE_SOURCE_DIR}是包含顶级CMakeLists.txt文件的目录的绝对路径.如果您知道要包含的模块文件的绝对路径,那么您肯定不应将其作为源树路径的前缀.只需将行更改为:
set(CMAKE_MODULE_PATH "/Users/Home/SFML-2.2-osx-clang-universal/cmake/Modules" ${CMAKE_MODULE_PATH})
Run Code Online (Sandbox Code Playgroud)
另请注意,由于您已REQUIRED在参数中指定,因此find_package()如果无法找到包,CMake将以错误终止.有if(SFML_FOUND)因此没有意义.
| 归档时间: |
|
| 查看次数: |
4108 次 |
| 最近记录: |