我目前正在學習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