[VTK] CMake ๋น๋ ๋ฐ Visual Studio ํ๊ฒฝ ๊ตฌ์ฑ
VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ
VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์์ ํ๊ฒฝ์ ๋ง์ถฐ ์ง์ CMake๋ก ๋น๋ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Visual Studio ๋ฒ์ ์ด๋ผ๋ ๊ฐ, 32bit ๋๋ 64bit์ ๋ง๋ ํ๊ฒฝ์ผ๋ก ๋น๋ํด์ผ ํฉ๋๋ค.
์ด์ ์๋ VTK CMake ๋น๋์ Visual Studio ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃฌ ๊ธ์ด ์๋๋ฐ์. VTK์ Visual Studio ๋ฒ์ ์ด ๋ฎ์ ์ข ๋ ์์ ๋ฒ์ ์ ๋ง์ถฐ ํฌ์คํ ์ ์๋ก ํ๊ฒ ๋์ต๋๋ค. ์ด์ ๊ธ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
[VTK] VTK 8.2 ๋ฐ Visual Studio 2015 ํ๊ฒฝ ๊ตฌ์ฑ
[VTK] Visual Studio 2015 MFC์์ VTK ์ฌ์ฉ ์ค๋นํ๊ธฐ
VTK ์ค๋นํ๊ธฐ
1. CMake ์ค์นํ๊ธฐ
VTK๋ฅผ ๋น๋ํ๊ธฐ ์ํด CMake ํ๋ก๊ทธ๋จ์ ์ค์นํด์ผ ํฉ๋๋ค. ๊ฑฐ์ ๋๋ถ๋ถ์ ์คํ ์์ค๋ ์ด CMake ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
2. VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ค ๋ค์ด๋ก๋ํ๊ธฐ
VTK ํํ์ด์ง์ ์ ์ํ์ฌ ์ต์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
3. Visual Studio ์ค์นํ๊ธฐ
์ฌ์ฉํ๋ ค๋ ๋ฒ์ ์ Visual Studio๋ฅผ ์ค๋นํฉ๋๋ค. ๋ณธ๋ฌธ์์๋ Visual Studio 2019๋ฅผ ์ค์นํ์ต๋๋ค.
VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ CMake ๋น๋ํ๊ธฐ
CMake ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Source code์ build ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
ํญ๋ชฉ | ์ค๋ช |
Where is the source code | VTK-X.Y.Z.tar.gz ์์ถ ํด์ ๋ ํด๋์ ๊ฒฝ๋ก |
Where to build the binaries | Binary ํ์ผ์ด ์์ฑ๋ ๋น์ด์๋ ๊ฒฝ๋ก |
์ข์ธก ํ๋จ์ Configure ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์ ์ฐฝ์ด ํ์๋๋ฉด ์ฌ์ฉํ๋ ค๋ Visual Studio์ ๋ฒ์ ๊ณผ Platform(bit ์)์ ์ ํํฉ๋๋ค.
Finish ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ด ๋ฌด์ธ๊ฐ ์งํ์ด ๋ฉ๋๋ค. PC ์ฌ์๋ง๋ค ๋ค๋ฅด์ง๋ง, ์ฝ 3๋ถ ์ ๋ ์์๋ฉ๋๋ค.
์ดํ ์๋์ ๊ฐ์ ํ๋ฉด์ด ํ์๋ฉ๋๋ค. VTK ์์ ๋ฒ์ ์์๋ ์ต์ ์ ํ์ด ์๋นํ ๋ง์๋๋ฐ์. 9.2.2 ๊ธฐ์ค์ผ๋ก๋ ์ต์ ์ด ์๋นํ ์ค์ด๋ค์์ต๋๋ค. ํน๋ณํ ์ด์ ๊ฐ ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์งํํด๋ ๋ฌธ์ ๋ ์์ต๋๋ค.
์ ์ ๊ฒฝ์ฐ์๋ ๋น๋๋ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Debug/Release ๊ฒฝ๋ก๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
C:/Program Files/VTK/${BUILD_TYPE}
์ต์ ์ ํ์ด ๋๋ฌ๋ค๋ฉด Generate ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ์ด ์์ ์ ๊ธ๋ฐฉ ๋๋๋ฉฐ, Open Project ๋ฒํผ์ด ํ์ฑํ๊ฐ ๋ฉ๋๋ค. ์ด ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋, Visual Studio๋ฅผ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํํ ํ Binary ๊ฒฝ๋ก์ ์๋ VTK.sln ํ์ผ์ ์ฝ๋๋ค.
Visual Studio์์ VTK.sln ํ์ผ์ด ์ด๋ฆฌ๋ฉด INSTALL ํ๋ก์ ํธ๋ฅผ ๋น๋ํฉ๋๋ค. ์ด ์์ ์ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ ๊ฒฝ์ฐ ์ฝ 15๋ถ์ด ๊ฑธ๋ ธ์ต๋๋ค. Debug ๋ชจ๋์ ๋น๋๊ฐ ๋๋๋ฉด Release ๋ชจ๋๋ก ๋ณ๊ฒฝํ์ฌ ๋ง์ ๋น๋ํฉ๋๋ค.
๋น๋๊ฐ ์๋ฃ๋๋ฉด CMake์์ ์ง์ ํ ๊ฒฝ๋ก์ ๋ค์๊ณผ ๊ฐ์ด Debug/Release ๊ฐ ํด๋์ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ด ์์ฑ๋์ด ์์ต๋๋ค.
Visual Studio์์ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๊ฒฝ ์ค์ ํ๊ธฐ
Visual Studio๋ฅผ ์คํํ๊ณ C++ ์ฝ์ ์ฑ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก์ ํธ ์์ฑ > ๋๋ฒ๊น > ํ๊ฒฝ์ dll์ด ์์นํ bin ํด๋์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.
C:\Program Files\VTK\Debug\bin
ํ๋ก์ ํธ ์์ฑ > C/C++ > ์ผ๋ฐ > ์ถ๊ฐ ํฌํจ ๋๋ ํฐ๋ฆฌ์ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ include ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.
ํ๋ก์ ํธ ์์ฑ > ๋ง์ปค > ์ผ๋ฐ > ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํฐ๋ฆฌ์ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ lib ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ๋ก์ ํธ ์์ฑ > ๋ง์ปค > ์ผ๋ฐ > ์ ๋ ฅ > ์ถ๊ฐ ์ข ์์ฑ์ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ lib ํ์ผ ๋ชฉ๋ก์ ์ ๋ ฅํฉ๋๋ค.
lib ํ์ผ ๋ชฉ๋ก์ ์ฝ๊ฒ ์ป๋ ๋ฐฉ๋ฒ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
[MFC] lib, dll ํด๋์ ํ์ผ ๋ชฉ๋ก ์ฝ๊ฒ ์ป๋ ๋ฐฉ๋ฒ
VTK Hello World ์คํํ๊ธฐ
์ด์ Visual Studio์ VTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๊ฒฝ ์ค์ ์ด ๋ชจ๋ ๋๋ฌ์ต๋๋ค. VTK ๊ณต์ ์์ ์ฝ๋์ธ Hello World๋ฅผ ์คํํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ฒด ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
#pragma once
#include <vtkAutoInit.h>
#define vtkRenderingCore_AUTOINIT 3(vtkRenderingOpenGL2,vtkInteractionStyle, vtkRenderingFreeType)
#define vtkRenderingContext2D_AUTOINIT 1(vtkRenderingContextOpenGL2)
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <array>
int main(int, char* [])
{
vtkNew<vtkNamedColors> colors;
// Set the background color.
std::array<unsigned char, 4> bkg{ {26, 51, 102, 255} };
colors->SetColor("BkgColor", bkg.data());
// This creates a polygonal cylinder model with eight circumferential facets
// (i.e, in practice an octagonal prism).
vtkNew<vtkCylinderSource> cylinder;
cylinder->SetResolution(8);
// The mapper is responsible for pushing the geometry into the graphics
// library. It may also do color mapping, if scalars or other attributes are
// defined.
vtkNew<vtkPolyDataMapper> cylinderMapper;
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
// The actor is a grouping mechanism: besides the geometry (mapper), it
// also has a property, transformation matrix, and/or texture map.
// Here we set its color and rotate it around the X and Y axes.
vtkNew<vtkActor> cylinderActor;
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(
colors->GetColor4d("Tomato").GetData());
cylinderActor->RotateX(30.0);
cylinderActor->RotateY(-45.0);
// The renderer generates the image
// which is then displayed on the render window.
// It can be thought of as a scene to which the actor is added
vtkNew<vtkRenderer> renderer;
renderer->AddActor(cylinderActor);
renderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
// Zoom in a little by accessing the camera and invoking its "Zoom" method.
renderer->ResetCamera();
renderer->GetActiveCamera()->Zoom(1.5);
// The render window is the actual GUI window
// that appears on the computer screen
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->SetSize(300, 300);
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("Cylinder");
// The render window interactor captures mouse events
// and will perform appropriate camera or actor manipulation
// depending on the nature of the events.
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor->SetRenderWindow(renderWindow);
// This starts the event loop and as a side effect causes an initial render.
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋์, ์ ๋ฐ๋ผ ํ์ จ๋์? ์ฌ๊ธฐ๊น์ง ๋ฌธ์ ์์ด ๋ฐ๋ผ ํ์ จ๋ค๋ฉด, ์ด์ VTK ์์ ์ฝ๋๋ฅผ ์คํํ๋๋ฐ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ ๋๋ค.
'Programming > Visual Studio' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C#] ์๋ฃจ์ ํ์๊ธฐ์์ Form์ด ์ฌ๋ผ์ง๋ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
[C#] ์๋ฃจ์ ํ์๊ธฐ์์ Form์ด ์ฌ๋ผ์ง๋ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
2022.12.27 -
[Visual Studio] ๋น์ฃผ์ผ ์คํ๋์ค 2019์์ ๊น๋ฉ(GitLab) ํจํค์ง ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
[Visual Studio] ๋น์ฃผ์ผ ์คํ๋์ค 2019์์ ๊น๋ฉ(GitLab) ํจํค์ง ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
2022.04.19 -
[Visual Studio] ๋น์ฃผ์ผ ์คํ๋์ค ๋ฐ์์ด ๋๋ ค์ง๋ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
[Visual Studio] ๋น์ฃผ์ผ ์คํ๋์ค ๋ฐ์์ด ๋๋ ค์ง๋ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
2021.07.22 -
[Visual Studio] ๊ฐ๋ ฅ ์ถ์ฒ! ๋น์ฃผ์ผ ์คํ๋์ค ์ ์ฉํ ํ์ฅ ํ๋ก๊ทธ๋จ ์๊ฐ
[Visual Studio] ๊ฐ๋ ฅ ์ถ์ฒ! ๋น์ฃผ์ผ ์คํ๋์ค ์ ์ฉํ ํ์ฅ ํ๋ก๊ทธ๋จ ์๊ฐ
2020.09.05