# 외부 라이브러리 설치 예제 코드

외부 라이브러리를 설치하고 사용하는 과정은 C++ 개발에서 필수적인 요소이다. 이 절에서는 Visual Studio와 GCC를 기준으로 몇 가지 대표적인 라이브러리 설치 예제를 제공하고, 각 설치 방법을 코드로 설명하겠다.

#### OpenCV 설치 및 사용 예제

OpenCV는 이미지 처리와 컴퓨터 비전 분야에서 널리 사용되는 라이브러리로, C++ 환경에서의 설치와 사용 예제를 다룬다.

**Visual Studio에서 OpenCV 설치**

1. **OpenCV 다운로드 및 설치**: OpenCV 공식 웹사이트에서 설치 파일을 다운로드하여 압축을 풀고 설치한다.
2. **Visual Studio 프로젝트 설정**:
   * 프로젝트를 생성한 후, `프로젝트 속성`에서 `VC++ 디렉터리`로 이동한다.
   * `Include Directories`와 `Library Directories`에 OpenCV 설치 경로를 추가한다.
   * `링커 -> 입력 -> 추가 종속성`에 OpenCV 라이브러리 파일을 추가한다. 예를 들어, `opencv_world460d.lib`를 추가한다.
3. **코드 예제**:

   ```cpp
   #include <opencv2/opencv.hpp>
   #include <iostream>

   int main() {
       cv::Mat img = cv::imread("example.jpg");
       if (img.empty()) {
           std::cerr << "Could not open or find the image!" << std::endl;
           return -1;
       }
       cv::imshow("Display window", img);
       cv::waitKey(0);
       return 0;
   }
   ```

**GCC에서 OpenCV 설치**

1. **OpenCV 설치**:

   ```bash
   sudo apt-get update
   sudo apt-get install libopencv-dev
   ```
2. **GCC 컴파일 명령어**:

   ```bash
   g++ -o opencv_example opencv_example.cpp `pkg-config --cflags --libs opencv4`
   ```
3. **코드 예제**는 Visual Studio의 코드와 동일하게 사용할 수 있다.

#### FFTW 설치 및 사용 예제

FFTW는 고속 푸리에 변환을 수행하기 위한 라이브러리이다. 이 섹션에서는 FFTW를 설치하고 사용하는 방법을 설명한다.

**Visual Studio에서 FFTW 설치**

1. **FFTW 다운로드 및 빌드**: FFTW 공식 웹사이트에서 소스 코드를 다운로드한 후, Visual Studio에서 빌드한다.
2. **Visual Studio 프로젝트 설정**:
   * `Include Directories`와 `Library Directories`에 FFTW 경로를 추가한다.
   * `링커 -> 입력 -> 추가 종속성`에 FFTW 라이브러리 파일을 추가한다.
3. **코드 예제**:

   ```cpp
   #include <fftw3.h>
   #include <iostream>
   #include <cmath>

   int main() {
       int N = 8;
       double in[N];
       fftw_complex out[N];
       fftw_plan plan = fftw_plan_dft_r2c_1d(N, in, out, FFTW_ESTIMATE);

       for (int i = 0; i < N; ++i) {
           in[i] = sin(2 * M_PI * i / N);
       }

       fftw_execute(plan);

       for (int i = 0; i < N; ++i) {
           std::cout << "out[" << i << "] = " << out[i][0] << " + " << out[i][1] << "i" << std::endl;
       }

       fftw_destroy_plan(plan);
       return 0;
   }
   ```

**GCC에서 FFTW 설치**

1. **FFTW 설치**:

   ```bash
   sudo apt-get install libfftw3-dev
   ```
2. **GCC 컴파일 명령어**:

   ```bash
   g++ -o fftw_example fftw_example.cpp -lfftw3 -lm
   ```
3. **코드 예제**는 Visual Studio의 코드와 동일하게 사용할 수 있다.

#### Boost 라이브러리 설치 및 사용 예제

Boost는 C++ 표준 라이브러리를 확장하는 다양한 기능을 제공하는 라이브러리이다. 여기서는 Boost 라이브러리 중 일부를 설치하고 사용하는 방법을 설명한다.

**Visual Studio에서 Boost 설치**

1. **Boost 다운로드**: Boost 공식 웹사이트에서 소스 파일을 다운로드하여 압축을 푼다.
2. **Visual Studio에서 Boost 빌드**: Boost 라이브러리 중 일부는 빌드가 필요하다. 예를 들어, `b2.exe` 빌드 도구를 사용하여 `boost_system`과 같은 라이브러리를 빌드할 수 있다.

   ```bash
   bootstrap.bat
   b2
   ```
3. **Visual Studio 프로젝트 설정**:
   * `Include Directories`와 `Library Directories`에 Boost 설치 경로를 추가한다.
   * 예를 들어, `boost_1_82_0` 폴더를 설정하여 `boost_system-vc142-mt-x64-1_82.lib`와 같은 라이브러리를 링크한다.
4. **코드 예제**:

   ```cpp
   #include <boost/algorithm/string.hpp>
   #include <iostream>
   #include <vector>

   int main() {
       std::string text = "Boost C++ Libraries";
       std::vector<std::string> words;
       boost::split(words, text, boost::is_space());

       for (const auto& word : words) {
           std::cout << word << std::endl;
       }
       return 0;
   }
   ```

**GCC에서 Boost 설치**

1. **Boost 설치**:

   ```bash
   sudo apt-get install libboost-all-dev
   ```
2. **GCC 컴파일 명령어**:

   ```bash
   g++ -o boost_example boost_example.cpp -lboost_system
   ```
3. **코드 예제**는 Visual Studio의 코드와 동일하게 사용할 수 있다.

#### Eigen 설치 및 사용 예제

Eigen은 행렬 연산과 수치 해석에 특화된 C++ 라이브러리이다. 간단한 설치로 행렬 연산을 쉽게 처리할 수 있다.

**Visual Studio에서 Eigen 설치**

1. **Eigen 다운로드**: Eigen의 공식 웹사이트에서 소스 파일을 다운로드한다. Eigen은 헤더 파일로만 구성되어 있으므로 빌드가 필요 없다.
2. **Visual Studio 프로젝트 설정**:
   * `Include Directories`에 Eigen의 경로를 추가한다.
3. **코드 예제**:

   ```cpp
   #include <Eigen/Dense>
   #include <iostream>

   int main() {
       Eigen::Matrix2d mat;
       mat(0,0) = 3;
       mat(1,0) = 2.5;
       mat(0,1) = -1;
       mat(1,1) = mat(1,0) + mat(0,1);

       std::cout << mat << std::endl;
       return 0;
   }
   ```

**GCC에서 Eigen 설치**

1. **Eigen 설치**: Eigen을 공식 웹사이트에서 다운로드하거나, 다음과 같은 명령어로 설치할 수 있다.

   ```bash
   sudo apt-get install libeigen3-dev
   ```
2. **GCC 컴파일 명령어**:

   ```bash
   g++ -o eigen_example eigen_example.cpp
   ```
3. **코드 예제**는 Visual Studio의 코드와 동일하게 사용할 수 있다.

#### Armadillo 설치 및 사용 예제

Armadillo는 C++ 기반의 선형 대수 연산 라이브러리로, 고성능 수치 연산을 제공한다. 이 라이브러리도 Eigen과 유사하게 사용된다.

**Visual Studio에서 Armadillo 설치**

1. **Armadillo 다운로드 및 설치**: Armadillo 공식 웹사이트에서 다운로드하거나, `CMake`를 사용하여 소스를 빌드할 수 있다.
2. **Visual Studio 프로젝트 설정**:
   * `Include Directories`와 `Library Directories`에 Armadillo 경로를 추가한다.
   * CMake를 사용할 경우, `cmake`를 통해 프로젝트를 설정하고 `Visual Studio`로 빌드할 수 있다.
3. **코드 예제**:

   ```cpp
   #include <armadillo>
   #include <iostream>

   int main() {
       arma::mat A = arma::randu<arma::mat>(4,4);
       arma::mat B = arma::randu<arma::mat>(4,4);
       arma::mat C = A * B;

       C.print("C = ");
       return 0;
   }
   ```

**GCC에서 Armadillo 설치**

1. **Armadillo 설치**:

   ```bash
   sudo apt-get install libarmadillo-dev
   ```
2. **GCC 컴파일 명령어**:

   ```bash
   g++ -o armadillo_example armadillo_example.cpp -larmadillo
   ```
3. **코드 예제**는 Visual Studio의 코드와 동일하게 사용할 수 있다.
