2017-07-25 82 views
0

在VS2017中使用CMake時,我一直無法弄清楚如何讓CMake找到並設置正確的GLFW CMake常量。任何幫助將不勝感激 :)。找不到CMake和vcpkg的GLFW目錄

我通過微軟的vcpkg工具下載了glfw3。我已檢查確實在vcpkg放入的目錄中存在文件(~\vcpkg\installed\x86-windows\include)。我按照他們的文檔here設置了我的CMakeSettings.json。我使用該教程作爲獲得GLFW正確設置的基礎。然後我使用find_package(glfw3 REQUIRED)找到glfw3庫。這不會吐出任何錯誤。其實CMakeLists.txt根本不抱怨。它處於它投訴的編譯階段。

之後,我將glfw3target_link_libraries(exe ${GLFW3_LIBRARIES})添加到可執行文件。

然後,當我嘗試構建一個簡單的示例(包括頭文件)時,編譯失敗,因爲它找不到GLFW/glfw3.h

從MSVC的錯誤:

fatal error C1083: Cannot open include file: 'GLFW/glfw3.h': No such file or directory 

這是我CMakeLists.txt用於補充參考:

cmake_minimum_required(VERSION 3.7) 
project(learn-opengl) 
find_package(glfw3 REQUIRED) 

add_executable(learn-opengl main.cpp) 
target_link_libraries(learn-opengl ${GLFW3_LIBRARIES}) 

GLFW3_LIBRARIES我從glfw3Config.cmake周圍什麼vcpkg放入安裝目錄中窺探得到(~\vcpkg\installed\x86-windows\share\glfw3

以防萬一,main.cpp

#include <GLFW/glfw3.h> 

int main() 
{ 
    return 0; 
} 

我試圖調用命令行cmake爲好,但無濟於事這也不能工作。

我錯過了什麼嗎?我可能誤解了vcpkg文檔中的某些內容嗎?我真的不知道我錯過了什麼......:/我應該說,另外,我對CMake也是一個新手。

+0

您可以將導入的目標'glfw'或'glfw3'添加到您的'target_link_libraries'命令而不是'$ {GLFW3_LIBRARIES}'嗎?這應該解決你看到的錯誤。 – vre

+0

@vre OMG! 'glfw'工作:D!您是否願意發表您的評論作爲答案,以便我可以解決這個問題?非常感謝!很簡單... –

回答

1

重整我以前的評論的答案:

您應該將進口目標glfw添加到您的target_link_libraries命令,而不是${GLFW3_LIBRARIES}find_package(glfw3)生成導入目標glfw。通過使目標learn-opengl依賴於此導入的目標,可以指定要鏈接的庫和要使用的包含目錄。