我目前正在学习CMake,我正在尝试创建我的第一个测试项目。我可以通过CMake在Visual Studio中获得一个简单的项目并运行。但是,我无法添加库。我已经阅读了一些指南和东西,但我不断收到错误。基本上,我试图在我的示例项目中链接SDL库(一个游戏编程库)。我已将这些库放置在顶层“ThirdParty”文件夹中。这里是我的CMakeLists.txt文件看起来像在我的顶层目录:如何在我的项目中使用CMake正确链接我的库?
cmake_minimum_required(VERSION 2.8.11)
project(Hello)
#Find necessary header files
find_path(SDL_INCLUDE_DIR SDL.h HINTS ${CMAKE_SOURCE_DIR}/ThirdParty/SDL2/include/)
#Find necessary library files
find_library(SDL_LIB_DIR SDL2 HINTS ${CMAKE_SOURCE_DIR}/ThirdParty/SDL2/lib/x86)
find_library(SDLMAIN_LIB_DIR SDLmain HINTS ${CMAKE_SOURCE_DIR}/ThirdParty/SDL2/lib/x86)
#Add/Link files to project
include_directories(${SDL_INCLUDE_DIR})
target_link_libraries(Test PUBLIC ${SDL_LIB_DIR})
target_link_libraries(Test PUBLIC ${SDLMAIN_LIB_DIR})
add_executable(Test "${CMAKE_SOURCE_DIR}/Source/Main.cpp")
我不是100%的确定中的提示参数的,但我看到它在另一个线程使用。总之,这里是我不断收到错误:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
SDLMAIN_LIB_DIR
linked by target "Test" in directory C:/Users/Jason/Desktop/Test
什么我做错了,我该如何正确链接库中的CMake?
正如你从错误信息中看到的那样,问题不在于*链接* SDLmain库,而是**搜索**它是在find_library()设置NOTFOUND值时找到要求的图书馆。查看[那个问题](http://stackoverflow.com/questions/14243524/cmake-find-library-matching-behavior)关于'find_library'如何工作以及如何用它找到你的库。 – Tsyvarev