首頁 > 軟體

Ubuntu上設定VTK開發環境——基於Visual Studio Code 與 GCC

2020-06-16 17:06:43

環境說明

vtk版本7.1.1
visual studio 1.16.1
Ubuntu 16.04 + 自帶的gcc

編譯過程與windows下類似還好,執行自己的程式碼開始面對cmake與make的各種命令以及檔案的編譯關係一臉懵逼,特別是一堆標頭檔案的依賴和庫依賴不知道從哪加起,瞬間發現visual studio寫c++的程式碼簡直是神器。

貌似Linux下比較智慧的可以用eclipse(我喜歡的idea開發c++只有收費版),懶得折騰得太多,就選擇了個輕量級的visual studio code搭建環境試試。

建議開始前稍微熟悉下cmake+gcc的編譯模式,相關命令多基於百度Google,有問題之處歡迎交流。

vtk 環境編譯

編譯前需要先安裝opengl的執行庫
sudo apt-get install freeglut3-dev

基於cmake-gui編譯,我編譯選項中主要修改為:

BUILD_SHARED_LIBS  選中  編譯可分享的庫檔案
CMAKE_BUILD_TYPE    release   如果有偵錯的需要還需選中debug
CMAKE_INSTALL_PREFIX   (預設位在/usr/local目錄下,make install 命令會將編譯出的靜態連結庫放入此目錄下)
VTK_USE_CXX11_FEATURES    使用c++11標準
VTK_RENDERING_BACKEND     使用opengl的版本,我的顯示卡支援opengl,不支援預設的opengl2 !!!! 設定為opengl2可以編譯成功但執行時會出錯

還可以考慮是否需要編譯Python Java等介面,是否需要編譯範例程式碼等

cmake 編譯出結果後,在輸出目錄呼叫make命令編譯(桌上型電腦core i3處理器 半個多小時)

編譯完成後 make install (不確定沒有install會不會出問題)

基於命令列編譯使用vtk執行範例程式碼

複製目錄下的程式碼檔案和cmake檔案到專案資料夾 vtk-7.1.1/Examples/Tutorial/Step1/Cxx

執行命令:

cmake ./
make

在編譯自己的程式碼時,對CMakeLists.txt檔案內容需要略作修改:

PROJECT (myVolumeRendering)

# 1. 如果提示找不到VTK則設定vtk的編譯輸出路徑
SET(ENV{VTK_DIR} /home/Hadoop/vtk-7.1.1/_bin) 

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

# 2. 此處設定為自己的cpp檔案,直接新增即可
SET(SRC_FILES
  myVolumeRender.cpp
  MyVtkTool.cpp)


add_executable(myVolumeRendering ${SRC_FILES})

target_link_libraries(myVolumeRendering ${VTK_LIBRARIES})

設定visual studio code編譯執行範例程式碼

複製目錄下的程式碼檔案和cmake檔案到專案資料夾 vtk-7.1.1/Examples/Tutorial/Step1/Cxx

重點在於設定tasks.json檔案(呼叫cmake與make命令編譯原始碼)與launch.json檔案(生成的可執行檔案執行或偵錯)

task 檔案設定

用vs code開啟專案資料夾,ctrl+shift+p, 輸入選擇 tasks:configure task runner,選擇c++ 或者other會在.vscode資料夾下新建一個tasks.json檔案。 貌似需要新建build資料夾。

貼上以下內容:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceRoot}/build"
    },

    "tasks": [
        {
            "taskName": "cmake",
            "command": "cmake",
            "args": ["-G",
                "Unix Makefiles",
                "-DCMAKE_BUILD_TYPE=relese",
                ".."]

        },
        {
            "taskName": "make",
            "command": "make",
            "args": [],
            
            "group": {
                "kind": "build",
                "isDefault": true
            }
            
        }
        
    ]

  
}

launch.json檔案設定

f5執行,會提示生成預設的launch.json檔案,複製以下內容

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/helloa",//此處設定可執行檔名
            "args": [],//可以設定偵錯引數等
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

cmakelists.txt檔案設定

新增vtk的路徑(不修改預設的INSTALL_PREFIX路徑時不確定),此處設定為cmake的output路徑
SET(ENV{VTK_DIR} /home/hadoop/vtk-7.1.1/_bin)

編譯執行

  1. ctrl+shift+p 輸入run task命令,執行cmake
  2. 可以同上執行make task(或者直接ctrl+shift+b)
  3. F5執行或偵錯

新增標頭檔案路徑 如果不需要程式碼補全等功能,此步可以省略。

包含標頭檔案的位置會出現綠色波浪線提示找不到標頭檔案,需要指定標頭檔案的路徑。點選標頭檔案,然後點選左方出現的黃燈,選擇某個設定選項會在.vscode目錄下新建c_cpp_properties.json檔案,在includePath與browse{path}下新增vtk的包含目錄。

在執行cmake task後,build/CMakeFiles/you_execute_name.dir/DependInfo.cmake檔案裡有相關的包含目錄,用帶正規表示式的查詢替換選項將 "$ 替換為 ", 即可新增後方的逗號。

       {
            "name": "Linux",
            "includePath": [//作用不詳,不確定去掉的影響……
                "/usr/include/c++/5",
                "/usr/include/x86_64-linux-gnu/c++/5",
                "/usr/local/include",
                "/usr/include",
                "/usr/include/x86_64-linux-gnu",
                "${workspaceRoot}",
                "/home/hadoop/vtk-7.1.1/_bin/Common/Core",
                "/home/hadoop/vtk-7.1.1/Common/Core",
                //……
                "/home/hadoop/vtk-7.1.1/Utilities/EncodeString"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {  //用於程式碼補全
                "path": [
                    "/usr/include/c++/5",
                    "/usr/include/x86_64-linux-gnu/c++/5",
                    "/usr/local/include",
                    "/usr/include",
                    "/usr/include/x86_64-linux-gnu",
                    "${workspaceRoot}",
                    "/home/hadoop/vtk-7.1.1/_bin/Common/Core",
                    "/home/hadoop/vtk-7.1.1/Common/Core",
                    //……
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        },

Ubuntu 14.04 安裝Visual Studio Code  http://www.linuxidc.com/Linux/2016-03/129052.htm

使用Visual Studio Code開發TypeScript  http://www.linuxidc.com/Linux/2015-07/119456.htm

Visual Studio Code 簡單試用體驗  http://www.linuxidc.com/Linux/2015-05/116887.htm

Visual Studio Code試用體驗  http://www.linuxidc.com/Linux/2015-07/120378.htm

Visual Studio 2010 & Help Library Manager 安裝說明 http://www.linuxidc.com/Linux/2012-11/74814.htm

OpenCV 2.3.x/2.4.x在Visual Studio 2005/2008和Visual Studio 2010設定方法詳解 http://www.linuxidc.com/Linux/2012-08/68302.htm

使用OpenCV-2.4.0.exe檔案編譯x86或x64平台Visual Studio 2005/2008/2010目標檔案 http://www.linuxidc.com/Linux/2012-08/68305.htm

Visual Studio LightSwitch增加對HTML5和JavaScript的支援 http://www.linuxidc.com/Linux/2012-06/63397.htm

Visual Studio 11:使用 C++ 開發一個最簡單的 Metro 應用 http://www.linuxidc.com/Linux/2012-06/62657.htm

Ubuntu 14.04如何安裝Visual studio Code  http://www.linuxidc.com/Linux/2016-07/132886.htm


IT145.com E-mail:sddin#qq.com