我有以下结构的项目:CMake的 - 寻找外部库
projectName-master/
data/
source/
thirdparty/ (here is placed FindSFML.cmake file)
.gitignore
CMakeLists.txt
README.md
SOURCES.md
TODO.md
我使用的CMake 2.8.11.1(cmake的-GUI)来产生视觉工作室SLN文件。路径设置是这样的:
- 这里是源代码:E:/ PROJECTNAME主
- 在哪里建的二进制文件:E:/ PROJECTNAME主/源(1.可我选择其他目录或它应该被设置为包含源文件的目录:h,cpp等?)
接下来我选择:配置 - >“指定该项目的生成器= Visual Studio 11,使用默认的本地编译器” - >完成
然后我得到一个信息:错误在配置过程中,项目文件可能是无效的
CMake的桂包含以下信息:
名称: CMAKE_INSTALL_PREFIX 值 C:/ Program Files文件(86)/ PROJECTNAME 名称: SFML_INCLUDE_DIR 价值 SFML_INCLUDE_DIR-NOTFOUND
CMake Error at thirdparty/FindSFML.cmake:165 (message):
Could NOT find SFML (missing: SFML_SYSTEM_LIBRARY SFML_WINDOW_LIBRARY
SFML_AUDIO_LIBRARY SFML_NETWORK_LIBRARY SFML_GRAPHICS_LIBRARY)
Call Stack (most recent call first):
CMakeLists.txt:63 (find_package)
我下载了SFML并设置了SFML_INCLUDE_DIR(在CMake Gui中):C:/OpenGL/SFML-2.1/include/SFML但我仍然得到这个错误。 2.如何解决这个问题?怎么样的lib文件和dll的?
EDIT1: 我下载SFML从official site
FindSFML.cmake从项目中不包含任何SFML_ROOT项,但SFML_INCLUDE_DIR看起来是这样的:
# find the SFML include directory
find_path(SFML_INCLUDE_DIR SFML/Config.hpp
PATH_SUFFIXES include
PATHS
${SFMLDIR}
$ENV{SFMLDIR}
~/Library/Frameworks
/Library/Frameworks
/usr/local/
/usr/
/sw # Fink
/opt/local/ # DarwinPorts
/opt/csw/ # Blastwave
/opt/)
那么如何设置SFML_ROOT?我需要一些条目(记录)添加到该文件?它是如何将会是什么样子?
EDIT2:新FindSFML.cmake的一部分与路径SFML(C:/OpenGL/SFML-2.1/)
find_path(SFML_INCLUDE_DIR SFML/Config.hpp
PATH_SUFFIXES include
PATHS
${SFML_ROOT}
$ENV{SFML_ROOT}
C:/OpenGL/SFML-2.1/
~/Library/Frameworks
/Library/Frameworks
/usr/local/
/usr/
/sw # Fink
/opt/local/ # DarwinPorts
/opt/csw/ # Blastwave
/opt/)
请参阅Edit1 – Irbis
我向项目位置添加了一个带有SFML-Edit2路径的新FindSFML.cmake。你是这个意思吗 ? – Irbis
但是如何以及在哪里定义了SFML_ROOT?我使用CMake-Gui。 – Irbis