windows10 + vs2015編譯 nanogui
說明:
A、OS : win10 1909 ,沒有配置OpenGL開發環境的 經歷。
B、 VS: 2015_up3
今天的隨筆是基於 昨天的原始碼。 若沒有看, 請點選 這裡
還有,需要用到 cmake , 而且需要將其新增到 環境變數中,這樣就可以愉快的在命令列使用cmake了。
-----------------------------------------------------------------------------------------------------------
1、準備好原始碼, 開啟原始碼資料夾, 來到 : XXXXX: \nanogui_lib\nanogui_lib\lib\nanogui 目錄。
C:\nanogui_lib\nanogui_lib\lib\nanogui 的目錄 2020/07/21 09:09 <DIR> . 2020/07/21 09:09 <DIR> .. 2020/07/21 09:11 <DIR> build 2020/07/20 10:42 22,396 CMakeLists.txt 2020/07/20 10:42 2,563 CONTRIBUTING.rst 2020/07/21 09:07 <DIR> docs 2020/07/21 09:07 <DIR> ext 2020/07/21 09:07 <DIR> include 2020/07/20 10:42 2,190 LICENSE.txt 2020/07/21 09:07 <DIR> python 2020/07/20 10:42 7,671 README.rst 2020/07/21 09:07 <DIR> resources 2020/07/21 09:07 <DIR> src 4 個檔案 34,820 位元組 9 個目錄 111,890,804,736 可用位元組
2、我這裡已經建立了 資料夾 build. 若沒有建立, 使用命令: mkdir+檔名 ( +為空格)
mkdir build
3、執行命令: cd build 進入build資料夾, 接著, 再執行命令: cmake ..
cmake ..
4、等待命令輸出 對應的解決方案 及其工程檔案,
C:\nanogui_lib\nanogui_lib\lib\nanogui\build>cmake .. -- Building for: Visual Studio 14 2015 -- Selecting Windows SDK version to target Windows 10.0.18363. -- The C compiler identification is MSVC 19.0.24215.1 -- The CXX compiler identification is MSVC 19.0.24215.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/major/development/tools/vs_install/vs_2015/VC/bin/cl.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/major/development/tools/vs_install/vs_2015/VC/bin/cl.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for pthread.h -- Looking for pthread.h - not found -- Found Threads: TRUE -- Using Win32 for window creation -- NanoGUI: LTO support enabled. -- Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE) CMake Warning at CMakeLists.txt:450 (message): NanoGUI: not building the Python plugin! -- Configuring done -- Generating done -- Build files have been written to: C:/nanogui_lib/nanogui_lib/lib/nanogui/build
5、繼續執行命令 dir ,可以看到生成了解決方案。
C:\nanogui_lib\nanogui_lib\lib\nanogui\build 的目錄 2020/07/21 09:11 <DIR> . 2020/07/21 09:11 <DIR> .. 2020/07/21 09:10 51,321 ALL_BUILD.vcxproj 2020/07/21 09:10 293 ALL_BUILD.vcxproj.filters 2020/07/21 09:10 15,768 CMakeCache.txt 2020/07/21 09:12 <DIR> CMakeFiles 2020/07/21 09:10 3,077 cmake_install.cmake 2020/07/21 09:12 <DIR> Debug 2020/07/21 09:11 <DIR> example1.dir 2020/07/21 09:10 64,586 example1.vcxproj 2020/07/21 09:10 597 example1.vcxproj.filters 2020/07/21 09:11 <DIR> example2.dir 2020/07/21 09:10 64,586 example2.vcxproj 2020/07/21 09:10 597 example2.vcxproj.filters 2020/07/21 09:11 <DIR> example3.dir 2020/07/21 09:10 64,586 example3.vcxproj 2020/07/21 09:10 597 example3.vcxproj.filters 2020/07/21 09:11 <DIR> example4.dir 2020/07/21 09:10 64,586 example4.vcxproj 2020/07/21 09:10 597 example4.vcxproj.filters 2020/07/21 09:11 <DIR> example_icons.dir 2020/07/21 09:10 64,676 example_icons.vcxproj 2020/07/21 09:10 602 example_icons.vcxproj.filters 2020/07/21 09:10 <DIR> ext_build 2020/07/21 09:10 <DIR> icons 2020/07/21 09:10 12,406 INSTALL.vcxproj 2020/07/21 09:10 535 INSTALL.vcxproj.filters 2020/07/21 09:10 55,517 mkdoc.vcxproj 2020/07/21 09:10 729 mkdoc.vcxproj.filters 2020/07/21 09:11 <DIR> nanogui-obj.dir 2020/07/21 09:10 73,592 nanogui-obj.vcxproj 2020/07/21 09:10 10,627 nanogui-obj.vcxproj.filters 2020/07/21 09:11 <DIR> nanogui.dir 2020/07/21 09:10 14,106 NanoGUI.sln 2020/07/21 09:12 51,712,000 NanoGUI.VC.db 2020/07/21 09:10 70,598 nanogui.vcxproj 2020/07/21 09:10 8,457 nanogui.vcxproj.filters 2020/07/21 09:11 1,741,174 nanogui_resources.cpp 2020/07/21 09:11 299 nanogui_resources.h 2020/07/21 09:11 <DIR> Win32 2020/07/21 09:10 54,393 ZERO_CHECK.vcxproj 2020/07/21 09:10 536 ZERO_CHECK.vcxproj.filters 28 個檔案 54,151,438 位元組 14 個目錄 111,864,328,192 可用位元組
6、 開啟 nanogui.sln 檔案。可以看有下面的專案:
7、 選擇專案:ALL_BUILD , 右鍵 選擇生成, (debug 與 release 都行), 靜待 生成 結果:
8、VS輸出結果:
1>------ 已啟動全部重新生成: 專案: ZERO_CHECK, 配置: Debug Win32 ------ 1> Checking Build System 2>------ 已啟動全部重新生成: 專案: glfw_objects, 配置: Debug Win32 ------ 3>------ 已啟動全部重新生成: 專案: nanogui-obj, 配置: Debug Win32 ------ 2> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/ext/glfw/src/CMakeLists.txt 2> context.c 3> Running bin2c 2> init.c 2> input.c 2> monitor.c 2> vulkan.c 2> window.c 3> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 2> win32_init.c 3> nanovg.c 3>c:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\fontstash.h(911): warning C4389: “!=”: 有符號/無符號不匹配 2> win32_joystick.c 3> glad.c 2> win32_monitor.c 2> win32_time.c 3> nanogui_resources.cpp 3> glutil.cpp 3> common.cpp 3> widget.cpp 3> theme.cpp 3> layout.cpp 3> screen.cpp 3> label.cpp 3> window.cpp 3> popup.cpp 3> checkbox.cpp 3> button.cpp 2> win32_tls.c 2> win32_window.c 3> popupbutton.cpp 2> wgl_context.c 2> egl_context.c 2> 正在生成程式碼... 2> glfw_objects.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\ext_build\glfw\src\glfw_objects.dir\Debug\glfw_objects.lib 3> combobox.cpp 3> progressbar.cpp 3> slider.cpp 3> messagedialog.cpp 3> textbox.cpp 3> imagepanel.cpp 3> imageview.cpp 3> vscrollpanel.cpp 3> colorwheel.cpp 3> colorpicker.cpp 3> graph.cpp 3> stackedwidget.cpp 3> tabheader.cpp 3> tabwidget.cpp 3> glcanvas.cpp 3> serializer.cpp 3> nanogui-obj.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\nanogui-obj.dir\Debug\nanogui-obj.lib 4>------ 已啟動全部重新生成: 專案: nanogui, 配置: Debug Win32 ------ 4> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 4> 正在建立庫 C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/nanogui.lib 和物件 C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/nanogui.exp 4> nanogui.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\Debug\nanogui.dll 4> nanogui.vcxproj -> C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/nanogui.pdb (Full PDB) 5>------ 已啟動全部重新生成: 專案: example1, 配置: Debug Win32 ------ 6>------ 已啟動全部重新生成: 專案: example2, 配置: Debug Win32 ------ 7>------ 已啟動全部重新生成: 專案: example3, 配置: Debug Win32 ------ 8>------ 已啟動全部重新生成: 專案: example4, 配置: Debug Win32 ------ 9>------ 已啟動全部重新生成: 專案: example_icons, 配置: Debug Win32 ------ 6> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 5> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 8> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 6> example2.cpp 5> example1.cpp 8> example4.cpp 7> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 9> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt 7> example3.cpp 9> example_icons.cpp 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(886): warning C4505: “stbi_failure_reason”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(932): warning C4505: “stbi_set_flip_vertically_on_load”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1064): warning C4505: “stbi_load_from_memory”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1071): warning C4505: “stbi_load_from_callbacks”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1096): warning C4505: “stbi_loadf_from_memory”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1103): warning C4505: “stbi_loadf_from_callbacks”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1111): warning C4505: “stbi_loadf”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1135): warning C4505: “stbi_is_hdr_from_memory”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1149): warning C4505: “stbi_is_hdr”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1173): warning C4505: “stbi_is_hdr_from_callbacks”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1189): warning C4505: “stbi_ldr_to_hdr_gamma”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1190): warning C4505: “stbi_ldr_to_hdr_scale”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1195): warning C4505: “stbi_hdr_to_ldr_gamma”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(1196): warning C4505: “stbi_hdr_to_ldr_scale”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(3845): warning C4505: “stbi_zlib_decode_malloc”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(3866): warning C4505: “stbi_zlib_decode_buffer”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(3877): warning C4505: “stbi_zlib_decode_noheader_malloc”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(3893): warning C4505: “stbi_zlib_decode_noheader_buffer”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(4265): warning C4505: “stbi_set_unpremultiply_on_load”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(4270): warning C4505: “stbi_convert_iphone_png_to_rgb”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(6423): warning C4505: “stbi_info”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(6445): warning C4505: “stbi_info_from_memory”: 未引用的本地函式已移除 5>C:\nanogui_lib\nanogui_lib\lib\nanogui\ext\nanovg\src\stb_image.h(6452): warning C4505: “stbi_info_from_callbacks”: 未引用的本地函式已移除 8> example4.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\Debug\example4.exe 8> example4.vcxproj -> C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/example4.pdb (Full PDB) 9> example_icons.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\Debug\example_icons.exe 9> example_icons.vcxproj -> C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/example_icons.pdb (Full PDB) 6> example2.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\Debug\example2.exe 6> example2.vcxproj -> C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/example2.pdb (Full PDB) 5> example1.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\Debug\example1.exe 5> example1.vcxproj -> C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/example1.pdb (Full PDB) 7> example3.vcxproj -> C:\nanogui_lib\nanogui_lib\lib\nanogui\build\Debug\example3.exe 7> example3.vcxproj -> C:/nanogui_lib/nanogui_lib/lib/nanogui/build/Debug/example3.pdb (Full PDB) 10>------ 已啟動全部重新生成: 專案: ALL_BUILD, 配置: Debug Win32 ------ 10> Building Custom Rule C:/nanogui_lib/nanogui_lib/lib/nanogui/CMakeLists.txt ========== 全部重新生成: 成功 10 個,失敗 0 個,跳過 0 個 ==========
9、開啟 build 目錄下的 Debug目錄(我這裡選擇 生成的是 debug ) , 可以看到生成了 很多檔案,包括 example1.exe 之類的, 還有dll, 還有lib。 debug, 很多的除錯檔案。
2020/07/21 09:12 <DIR> . 2020/07/21 09:12 <DIR> .. 2020/07/21 09:12 603,648 example1.exe 2020/07/21 09:12 2,566,584 example1.ilk 2020/07/21 09:12 9,523,200 example1.pdb 2020/07/21 09:12 479,744 example2.exe 2020/07/21 09:12 2,094,408 example2.ilk 2020/07/21 09:12 8,114,176 example2.pdb 2020/07/21 09:12 483,840 example3.exe 2020/07/21 09:12 2,174,368 example3.ilk 2020/07/21 09:12 8,155,136 example3.pdb 2020/07/21 09:12 186,880 example4.exe 2020/07/21 09:12 1,031,136 example4.ilk 2020/07/21 09:12 6,492,160 example4.pdb 2020/07/21 09:12 280,064 example_icons.exe 2020/07/21 09:12 595,868 example_icons.ilk 2020/07/21 09:12 5,066,752 example_icons.pdb 2020/07/21 09:12 3,741,696 nanogui.dll 2020/07/21 09:12 379,970 nanogui.exp 2020/07/21 09:12 15,098,316 nanogui.ilk 2020/07/21 09:12 586,868 nanogui.lib 2020/07/21 09:12 57,389,056 nanogui.pdb
10、執行 exampleX.exe, 。 可以看到 NanoGUI 在github 上的截圖了。
------完結------
下一步, 閱讀原始碼。