반응형

학생 연구원에서 연구과제로 Muse 2를 받게 되었다.

그런데 기존에 다른 분이 조사하신건 Python으로 Muse LSL를 설치해서 하는 방법인데, 이 방법은 Python으로만 할 수 있는걸로 알고 있는데 프로젝트가 C++로 해야하는데 이 언어도 지원 안하고 심지어 추가적인 BlueMuse인가 하는 것도 설치해야한다.

 

그렇기 때문에 나는 BrainFlow를 알게되서 이 방법을 사용하기로 했는데 굉장히 어려웠다.. 4시간을 이러고 있었으니.. 내일 수업인데도 새벽 3시까지..

 

(혹시나 몰라서 말하는거지만 아래 글에 있는 경로 그대로 붙여넣으면 안된다. pkdpm은 그냥 내 컴퓨터 이름이기 때문에 자신의 컴퓨터 이름으로 바꿔야한다.)

 

Muse 2, Muse S 블루투스에 대해서

일단 Muse의 경우 블루투스로 연결하게 된다. 여기에서 문제는 아마 이게 BLE 같은데.. 저전력 블루투스.. 그렇다 보니 연결도 BlueMuse 같은 방법으로 연결하는 듯 하다.. 

그런데 다행이도 BrainFlow에선 무언가 설치 안하고 바로 동작할 수 있게 되어있는데 기존에는 BLED112라는 제품을 사용해야했다. https://brainflow.org/2021-06-22-muse-bled/ 이게 처음 Muse 지원했을 때 글 같은데 BLED112라는게 필수적으로 필요했다. 

그런데 https://brainflow.org/2021-11-01-new-release/ 지원 4개월 후 쯤에 BLED112를 사용하지 않고도 가능하게 바뀌었다라는 소식이 있었다.

이거를 할려면 글에 나온 것 처럼 빌드 할 때 --ble를 추가하던지, CMake에서 DBUILD_BLE를 ON으로 해야하는 것 같다.

(참고로 일반적으로 블루투스 연결할려고 하면 전혀 목록에 뜨지 않는게 정상이다. 모바일은 뜨긴 하지만..)

 

아무튼 일단 Python으로 설치해보기! - (전 안되네요..)

일단 공식적으로 파이썬으로 빠르게 설치하는 방법이 있는데.. 이상하게도 기본 방법은 설치가 되는데 --ble 라는 파라미터를 추가하면 빌드가 이상하게 오류가 뜬다.. 왜인지는 잘 모르겠지만..

일단 관련 글은 여기에 있다.

https://brainflow.readthedocs.io/en/stable/BuildBrainFlow.html#compilation-of-core-module-and-c-binding

 

Installation Instructions — BrainFlow documentation

R R binding is based on reticulate package and calls Python , so you need to install Python binding first, make sure that reticulate uses correct virtual environment, after that you will be able to build R package from command line or using R Studio, insta

brainflow.readthedocs.io

git clone https://github.com/brainflow-dev/brainflow.git
python -m pip install cmake
cd brainflow/tools
python build.py --help

일단 위에 명령어 처럼 친다. 명령어는 원하는 폴더에서 치면 되는데 나는 그냥 Downloads 폴더에서 했다.

이렇게 하면 brainflow 깃허브 파일이 모두 다운로드 되고 cmake 라이브러리를 설치하고 brainflow의 tools 폴더로 이동해서 build.py의 도움 내용을 출력하는 것이다.

 

usage: build.py [-h] [--oymotion] [--no-oymotion] [--msvc-runtime {static,dynamic}] [--generator GENERATOR]
                [--arch {x64,Win32,ARM,ARM64}] [--cmake-system-version CMAKE_SYSTEM_VERSION] [--build-dir BUILD_DIR]
                [--brainflow-version BRAINFLOW_VERSION] [--cmake-install-prefix CMAKE_INSTALL_PREFIX] [--use-openmp]
                [--onnx] [--warnings-as-errors] [--debug] [--clear-build-dir] [--num-jobs NUM_JOBS] [--bluetooth]
                [--no-bluetooth] [--ble] [--no-ble] [--tests] [--no-tests]

options:
  -h, --help            show this help message and exit
  --oymotion
  --no-oymotion
  --msvc-runtime {static,dynamic}
                        how to link MSVC runtime
  --generator GENERATOR
                        generator for CMake
  --arch {x64,Win32,ARM,ARM64}
                        arch for CMake
  --cmake-system-version CMAKE_SYSTEM_VERSION
                        system version for win
  --build-dir BUILD_DIR
                        build folder
  --brainflow-version BRAINFLOW_VERSION
                        BrainFlow Version
  --cmake-install-prefix CMAKE_INSTALL_PREFIX
                        installation folder, full path
  --use-openmp
  --onnx
  --warnings-as-errors
  --debug
  --clear-build-dir
  --num-jobs NUM_JOBS   num jobs to run in parallel
  --bluetooth
  --no-bluetooth
  --ble
  --no-ble
  --tests
  --no-tests

 

일단 이게 내용인데 일단 내가 아는 것 중에 먼저 말하자면 나중에 C++에서 사용할 때 Release로 빌드 해야하는 것 같다.. 만약에 Debug로 빌드를 하고 싶으면 --debug를 추가해야하는 것 같다. 근데 또 저거 추가하면 Release가 안먹힌다...

그리고 기본적으로 --bluetooth는 켜져있다. (bluetooth는 일반 블루투스 장치를 지원하는 것 ble와는 다른 것)

그리고 --ble가 필요한건데 저전력 블루투스를 지원하게 하는 것이다. 그렇기 때문에 명령어는 아래 처럼 치면 된다.

python build.py --ble

그런데 위에 소제목에서 말한 것 처럼 나는 이게 이상하게도 안된다.. (더 신기한건 --ble를 제거하면 되긴 한다)

실행하면 아래처럼 오류가 뜬다. (글 쓰면서 실행하는데.. 역시 C++ 빌드는 너무 오래걸리는..)

  Brainflow.vcxproj -> C:\Users\pkdpm\Downloads\brainflow\build\Release\Brainflow.lib
Traceback (most recent call last):
  File "C:\Users\pkdpm\Downloads\brainflow\tools\build.py", line 306, in <module>
    main()
  File "C:\Users\pkdpm\Downloads\brainflow\tools\build.py", line 302, in main
    build(args)
  File "C:\Users\pkdpm\Downloads\brainflow\tools\build.py", line 287, in build
    run_command(cmd_build, cwd=args.build_dir)
  File "C:\Users\pkdpm\Downloads\brainflow\tools\build.py", line 22, in run_command
    raise ValueError('Process finished with error code %d' % p.returncode)
ValueError: Process finished with error code 1

 

이런 오류가 뜨게 된다.. 아무리 해도 지우고 다시 해보고 다른 것도 켜보고 하는데도 안되었다.. (이것 때메 1시간을 날린..)

그래서 결국 안되서 그냥 수동으로 빌드하기로 했다.. 

 

2024-09-15 변경 - 해결 방법

지금 이건 9월 15일인 오늘 추가로 작성하는 것이다.

나는 이 문제가 다시 무엇인지 볼려고 확인을 해보니.. 문제를 알아냈다. 

간단하게 말한다면 컴파일을 하는데 UTF-8로 컴파일이 되지 않고 다른 인코더로 컴파일이 되면서 오류가 발생한 것 같다.

이 문제를 해결하는 제일 간단한 방법은 윈도우 검색 창에 "국가 또는 지역"을 검색하고 창을 열어서 관리자 옵션에 들어가면

이런식으로 "시스템 로캘 변경"이라고 뜬다. 저걸 눌른 후 

아래 보이는 "Beta: 세계 언어 지원을 위해 Unicode UTF-8 사용"를 활성화 한다.

이렇게 한 후에 다시시작하고 컴파일을 하면 정상적으로 된다.

아마도 한국어 윈도우나 일본어 윈도우 이런건 아마도 EUC-KR EUC-JP 같은 인코더로 되어있어서 컴파일할 때 저걸로 컴파일 해서 오류 나는 것 같은데 이건 윈도우에서 기본으로 쓰는 인코더를 UTF-8로 바꿔서 해결할 수 있는 것 같다.

 

일단 나는 이 문제를 발견해서 빌드할 때 처음부터 UTF-8로 빌드되도록 소스코드를 수정해서 풀 리퀘스트를 했다.

그래서 지금은 수정이 된 상태이다.

https://github.com/brainflow-dev/brainflow/pull/745

 

Fix UTF-8 encoding problem by cheongpark · Pull Request #745 · brainflow-dev/brainflow

Traceback (most recent call last): File "C:\Users\cheongpark\brainflow\tools\build.py", line 309, in <module> main() File "C:\Users\cheongpark\brainflow\tools\build.py", l...

github.com

그래서 파일을 다운받고 그냥

python build.py --ble

이렇게 빌드해도 오류 없이 정상적으로 컴파일이 된다..!

 

그리고 컴파일 되면 "installed"라는 폴더가 생기는데 여기에 inc 폴더와 lib 폴더가 생긴다. 이거를 가져다가 이 글 아래에 설명되어있는 대로 하면 정상적으로 작동한다! (도데체 왜 저 문제를 이제야 찾은걸까..)

 

추가적으로 Muse에 대한 내용이 잘 못 기재되어있다.

구글에 검색해보면 Muse 기기의 EEG 이름이 TP9, AF7, AF8, TP10 로 되어있는데 여기에서는 TP9, Fp1, Fp2, TP10 이걸로 설정 되어있다. 그래서 결국에는 이 정보를 어디에서 가져오는지 찾아내고 정확한 정보를 기재해서 이것도 풀 리퀘스트를 했다. (심지어 Muse 관련 코드를 열어봐도 Fp1, Fp2는 없고 AF7, AF8만 있다.. 엄..) (처음으로 남의 프로젝트에 풀 리퀘스트를 해보았어서.. 심장이 엄청 뛰어댔었다.. 내가 수정해도 되는게 맞을까 하고..)
https://github.com/brainflow-dev/brainflow/pull/744

 

Fix EEG names for Muse 2, Muse S, Muse 2016 by cheongpark · Pull Request #744 · brainflow-dev/brainflow

Description of Changes I noticed that the eeg_names for the Muse 2 I am using were incorrect. Upon checking, it seems that the names have changed. Original: TP9, Fp1, Fp2, TP10 Updated: TP9, AF7, A...

github.com

 

아무튼 오늘 날짜 기준으로 최신버전이 5.13.3인데

pip install brainflow

를 해도 최신버전으로 수정이 안되어있다.

이유는 간단하다. 그냥 새로운 버전을 개발자가 안올렸기 때문에..

 

뭐.. 5.13.4 쯤에는 올라와 있을테니 그 때 까지 기달려야 할 것 같다..

 

아무튼 이 아래 부터는 전에 쓴 내용이 어이진다.

 

CMake로 BrainFlow 수동 빌드하기

일단 아쉽게도 나는 CMake를 예전에 OpenCV 빌드하다가 빡쳐서 포기했던 녀석이라.. 왠만하면 쓰기 싫었다.. (지금은 VCPKG 쓰는..)

그렇지만 일단 이건 연구 과제이기 때문에 해야했다.

마찬가지로 아까 위에 올린 링크에 같이 설치 방법이 있다. (저거 링크 들어가보면 In VS installer make sure you selected “Visual C++ ATL support” 저거를 VS 인스톨러에서 설치하라는건데 2022 버전에선 사라진 것 같다. 없기도 하고 설치 안해도 문제가 없는 것 같다.)

https://brainflow.readthedocs.io/en/stable/BuildBrainFlow.html#compilation-of-core-module-and-c-binding

 

Installation Instructions — BrainFlow documentation

R R binding is based on reticulate package and calls Python , so you need to install Python binding first, make sure that reticulate uses correct virtual environment, after that you will be able to build R package from command line or using R Studio, insta

brainflow.readthedocs.io

 

만약에 전에 위 글 처럼 파이썬으로 빌드 해보셨다면 지울게 있습니다!

혹시라도 위에 글 처럼 빌드를 한번 해보았다면 지울게 있다.

compiled, build 폴더이다. 이건 brainflow 폴더에서 모두 지우고 실행해야한다. 아니면 그냥 brainflow 폴더를 지우고 다시 git clone 하는 것도 방법..

 

CMake 설치 & 설정!

https://cmake.org/download/ 여기에서 나는 Windows 이기 때문에 Windows x64 Installer 이걸로 선택해서 설치했다.

설치하는건 별로 어려운게 아니여서 패스..

 

이제 CMake로 구성 설정하고 프로젝트를 만들어야 한다. 

CMake를 설치하면 실행이 가능한데 실행을 한다!

이렇게 뜨는데 여기에서 Where is the source code에는 Browse Source... 버튼을 눌러 brainflow 위치로 잡는다.

나 같은 경우는 다운로드 폴더에 brainflow를 넣었기 때문에 이걸로 지정했다.

C:\Users/pkdpm/Downloads/brainflow

그러면 그 후에는 Where to build the binaries 폴더를 선택하는건데 이건 빌드 폴더를 만드는거다.

Browse Build...을 눌러서 폴더를 지정한다. 하지만 이건 일단 위에 있는 경로로 설정을 하고 뒤에 build만 붙이면 된다.

이렇게

C:/Users/pkdpm/Downloads/brainflow/build

이렇게 하면 아래처럼 된다.

이제 여기에서 프로젝트를 만들어야 하는데

아래에 있는 Configure 버튼을 눌른다.

혹시 만약에 아래 사진 처럼 경고 같은거 뜨면 Yes 눌르면 된다. build 폴더 지정했으면서 build 폴더를 안만들었으니 만들어주겠다는 표시이다.

 

암튼 Configure 눌르게 되면 이렇게 뜨는데

여기에서 맨 위에 있는 Visual Studio 17 2022는 그냥 자신이 설치한 Visual Studio 버전이다. BrainFlow에선 2019를 권장하고 2017만 말하고 있는데 테스트 해보니 2022도 상관없는 것 같다. 그냥 바로 Finish 눌른다.

 

그런 후에는 아무것도 없던 곳에 이런 화면처럼 바뀐다.

이제 여기에서 어떤걸 빌드할지 선택할 수 있는데 여기에서 Muse 2나 Muse S가 지원될 수 있는 BUILD_BLE를 선택한다.

그리고 여기에서 좀 고생한건데.. 나중에 컴파일 하다 보면 이상하게 INSTALL 프로젝트를 빌드하면 setlocal 이러면서 오류가 뜬다.. 대충 나한테 권한 없는 곳에 폴더 두라 했다면서 화내는 오류인 것 같다.

그렇기 때문에 미리 방지하기 위해 CMAKE_INSTALL_PREFIX 부분을 수정한다. 저게 이제 INSTALL 프로젝트를 빌드하면 빌드된걸 모으는건데 어디로 모을껀지인거다.

폴더 위치는 아무데나 잡아도 되는데 관리자 권한 필요없는 폴더로 지정한다. 나는 그냥 brainflow 안에 install 폴더 안에 넣기로 했다.

내가 말한거 키면 이렇게 아래처럼 된다.

이제 아래쪽에 Generate 버튼 눌르면 바로 프로젝트가 만들어지게 된다.

다 만들어지고 나면 아래 사진처럼 원래는 Open Project 버튼이 비활성화였는데 활성화로 바뀌게 된다.

그러면 빌드 하기위해 바로 Open Project를 눌른다! 

 

빌드하기

Open Project를 눌르면 바로 Visual Studio가 켜지는데 만약에 안켜지만 직접 build 폴더 가서 키는걸로..

암튼 킨 후에 위에 보면

이렇게 생긴게 있다. 어떤걸로 빌드할지인데 아까전에 CMake 설정할 때 Debug는 따로 설정안했기 때문에 Release로 바꾼다. 그냥 눌러서 Release로 바꾸면 된다.

이렇게

그 후에는 이제 빌드를 해야하는데 ALL_BUILD를 눌러서 전부 빌드하면 좋겠지만 이상하게도 아까 추가했던 BLE에 대한건 ALL_BUILD에 추가가 안되어있는 것 같다. (BLE 프로젝트 빌드 안하고 하면 뭐 없다면서 오류남)

그래서 먼저 BLE 프로젝트 부터 빌드 해야하는데 그냥 simpleble 프로젝트를 오른쪽 클릭해서 빌드 버튼 눌르면 된다.

조금 시간이 걸리긴 하는데.. 하다보면 뜰 수도 있고 안뜰 수도 있는데 나 처럼 오류가 생길 수 있다.

오류	C2220	다음 경고는 오류로 처리됩니다.	simpleble	chrono.h

사진 아래 경고는 딱히 상관없다. 그냥 인코더 오류인 것 같은데.. (아까는 안뜨던데..)

어쨋든 chrono.h가 뭔 문제인지 경고가 뜨는거다. simpleble 프로젝트를 보면 chrono.hfmt/chrono.h에 있다고 분명 정의가 되어있고 아무 문제가 없는 것 같은데도 저런 오류가 뜬다. 근데 저건 경고인데 오류로 처리한거라 그냥 무시하도록 바꾸면 된다.

simpleble 프로젝트를 오른쪽 클릭하고 속성에 들어간다.

그럼 대충 이런식으로 뜰텐데

여기에서 왼쪽 리스트에서 C/C++ 안에 일반에 보면 사진처럼 경고를 오류로 처리는 항목이 있다.

이거 떄문에 아까 오류가 뜬건데 그냥 아니요(/WX-)로 바꾸면 된다.

그 후에 확인을 눌러서 저장하고 다시 simpleble 프로젝트 오른쪽 클릭해서 빌드 눌러서 빌드한다.

그러면 정상적으로 빌드가 되게 된다.

이런식으로 아래에 출력창에 뜬다.

이제 필요한건 다 빌드 했으니 ALL_BUILD를 빌드하면 된다.

똑같이 그냥 ALL_BUILD 프로젝트를 오른쪽 클릭하고 빌드 버튼 눌러서 빌드 하면 된다.

이건 좀더 많이 오래걸린다.. 전부 빌드해야해서..

다 하면 이렇게 3분 동안 빌드한게 뜬다..

 

이제 마지막으로 이걸 한 폴더안에 전부 모을 수 있게 프로젝트를 빌드해야하는데 바로 INSTALL 프로젝트이다.

이것도 그냥 똑같이 INSTALL 프로젝트를 오른쪽 클릭해서 빌드 버튼 눌르고 빌드하면 된다.

(만약에 혹시 setlocal인가 하는 오류 뜨면 위에 못보고 지나친 글 보면 된다.)

이렇게 하면 위에서 말한 대로 

C:/Users/pkdpm/Downloads/brainflow/install

사전에 CMake에서 설정한 곳에 빌드된게 생긴다. inclib 폴더이다. 어떤 역할인지는 대충 폴더 보면 알 수 있고.. 암튼 이거를 사용할 수 있게 어디 C 안에 두면 된다.

나 같은 경우는 전에 VCPKG 설치하면서 만들어 두었던 dev 폴더에 넣기로 했다.

C:/dev/brainflow

 

나는 이 폴더에 inclib 폴더를 넣었다.

 

예제 프로젝트 만들어서 실행해보기

이제 잘 되는지 테스트 해보기 위해 프로젝트를 만들어서 실행해봐야 한다.

일단 Visual Studio를 실행한다.

새 프로젝트 만들기 해서 빈 프로젝트를 하나 만든다.

소스 파일 오른쪽 클릭해서 새 파일로 main.cpp 파일 만들고 그 안에 아래 링크에 있는걸 복사해서 붙인다.

https://github.com/brainflow-dev/brainflow/blob/master/cpp_package/examples/get_data/src/get_data_muse.cpp

 

brainflow/cpp_package/examples/get_data/src/get_data_muse.cpp at master · brainflow-dev/brainflow

BrainFlow is a library intended to obtain, parse and analyze EEG, EMG, ECG and other kinds of data from biosensors - brainflow-dev/brainflow

github.com

그냥 어쩌다가 예제 찾다보니 찾은건데 저거 하면 CSV로 레코딩된거 10초간 기록되는 것 같다.

일단 코드에서 수정할 것이 있는데 만약에 자신꺼가 Muse S라면 상관없는데 Muse 2면 

int board_id = (int)BoardIds::MUSE_S_BOARD;

23번째 줄에 있는 이 코드를 아래처럼 바꾼다

int board_id = (int)BoardIds::MUSE_2_BOARD;

그런 후에 실행하면 당연하게도 안된다. 

일단 Debug 모드에서 실행한 것도 있고 아까 빌드한걸 연결 안했기 때문이다.

일단 이걸 Release로 우선 바꾸고

이제 빌드한걸 연결해야하는데

프로젝트를 오른쪽 클릭해서 속성에 들어간다.

아까 본 것 처럼 이런 화면 뜨는데 

먼저 C/C++일반에 들어간다.

그러면

추가 포함 디렉토리가 뜨는데 여기에 아까전에 빌드한거 뒀던 곳의 inc 경로를 붙여넣으면 된다. 나 같은 경우엔 devbrainflow에 넣었기 때문에 여기 안에 있는 inc 폴더의 경로를 넣으면 된다.

이런식으로 그 후에는 lib 퐇더를 연결시켜야 하는데

링커일반추가 라이브러리 디렉터리 부분에 lib 폴더를 넣으면 된다.

이런식으로

 

이제 어떤 lib 파일을 쓰는건지 넣는 것 같은데 암튼 이것도 해야한다.

위 사진 처럼 링커입력추가 종속성 부분에 또 뭔가를 넣어야 한다.

이건 아래꺼를 그냥 넣으면 된다. 복사해서 넣어도 되고 파일 이름 찾아서 넣어도 되고

Brainflow.lib
BoardController.lib
DataHandler.lib
MLModule.lib

넣을 때는 저거 오른쪽에 화살표 같은거 눌러서 편집 버튼 눌러서 맨 위에 빈칸에 넣으면 된다.

그 후에 아래에 확인 버튼을 눌르면 설정이 완료된다.

 

이제 모두 파일을 연결했다!

오류	LNK2038	'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MT_StaticRelease' 값이 'MD_DynamicRelease'(main.obj에 위치) 값과 일치하지 않습니다.

그런데 또 실행해보면 이런 문제가 발생한다.

 

대충 그냥 런타임 라이브러리가 이상하게 설정되어있다는 건데 뭐.. 설정하면 된다..

다시 프로젝트 속성에 가서

C/C++코드 생성에서 런타임 라이브러리를 수정하면 된다. 보통은 다중 스레드 DLL(/MD)로 되어있을 텐데 이걸 다중 스레드(/MT)로 바꿔주면 된다. 아래처럼

(뭐.. Debug 모드에선 MTd로 설정해야 하긴 하는데 어차피 Debug 껀 빌드 안했으니 뭐..)

 

(참고로 이후에 프로젝트 진행하면서 MD로 빌드 해야해서 해보니 CMake로 Open Project 했을 때 열리는 것에서 오른쪽 ALL_BUILD 등등의 프로젝트 속성에서 C/C++의 코드 생성에서 런타임 라이브러리를 모두 MD로 바꿔주고 빌드하면 MD로 빌드된다.)

 

그 후에 확인 버튼을 눌르고 다시 실행한다! 실행하는건 Ctrl + F5로 

 

그러면 드디어 빌드가 되고 실행이 된다!

근데 이런식으로 오류가 뜨게 된다.

컴파일 한걸 실행할려는데 DLL 파일이 없어서 안되는거다. 그냥 옮기면 된다.

아까전에 빌드 했던거 옮겨놓은 폴더에 가서 lib 폴더로 들어간다.

그러면 .dll로 되어있는 파일들이 여러개 보이는데 뭐인지 확인하는건 귀찮으니깐 .dll로 되어있는 파일은 모두 복사한다.

(Ctrl 키 눌르고 여러개 선택해서 복사하면 된다.)

 

붙여 넣는 곳은 프로젝트를 오른쪽 클릭해서 파일 탐색기에서 폴더 열기(X) 버튼을 눌른 후 뜨는 폴더에 다 붙여넣으면 된다.

그렇게 되면 이렇게 붙여넣어졌을 것이다.

이러면 끝이다!

이제 Muse 제품의 전원을 키고 실행해보면? 정상적으로 연결이 된다!

실행하면 아래처럼 뜨는데 

Found Muse device, Connected to Muse Device 이거 뜨면 정상적으로 연결된거다!

이렇게 된 후에는 자동으로 10초간 정보가 기록되고

이렇게 csv 파일로 기록이 된다!

만약에 연결이 안되거나 하면 전원을 켜보거나 자신의 PC에 블루투스 동글이나 블루트스 연결할 수 있는 장치가 있는지 확인해보는걸 추천한다..

 

마무리

 

그리고 csv에 저장된건 사실 봐도 지금은 뭔지는 모르겠다.. 일단 연구 과제가 이걸로 뭐 UI 만들어서 기록하도록 만드는건데 암튼 이걸 할려고 좀 이상한 짓을 한 것 같다.. 그냥 파이썬을 커맨드 라인으로 실행해서 하는 것도 빨랐을지도.. (뭐 시간이 중요해서 이렇게 하는거지만..) 

 

아무튼 어쩌다 보니 10분안에 쓸려고 했었는데 1시간 30분 동안 쓰고 있다.. 

이 외의 오류는 저도 해결은 잘 못하겠지만.. 암튼 잘해보시길요..

 

오늘 수업 있는데.. 왜 시계에 오전 4:38 이라고 떠있는거지..

 

그리고 위에 말한 것 처럼 이 이외에 오류나는건 나도 모른다.

반응형

'설치 > C++' 카테고리의 다른 글

Visual Studio 자동 완성 규칙 변경  (0) 2024.01.25
VCPKG 버전 업데이트  (0) 2024.01.08
DLIB & OPENCV 진짜 쉽게 깔아보기 C++  (0) 2022.11.06
윈도우에서 VCPKG 설치하기  (0) 2022.11.06
반응형

Visual Studio에서 자동완성을 하면 항상 내가 쓰는 방법대로 자동완성이 되지 않는다..

예를 들면..

// 내가 원하는 스타일
void test() {
}

// 내가 원하지 않는 스타일
void test() 
{
}

 

그래서 계속 짜증났는데.. 다행히 방법이 있었다!

 

Visual Studio 한국어 기준

도구 > 옵션

옵션 창에서 텍스트 편집기 > 변경하고 싶은 스타일의 언어 (C/C++) > 코드 스타일 > 서식 > 줄 추가

이 곳으로 들어오면 여러가지 선택 창이 있는데..

여기에서 각 버튼을 눌러보면 아래에 예시가 뜬다!

이걸 보고 선택하면 된다.

 

case: public: private: 같은 들여쓰기가 자동으로 안되는 것도.. 여기에서 줄 추가 말고 들여쓰기 탭에 가면 있다..

 

설정하면 원하는 대로 잘 된다!

반응형
반응형

VCPKG가 설치 안되신 분은 여기로!

https://cheongpark.tistory.com/15

 

윈도우에서 VCPKG 설치하기

VCPKG는 대충 C++ 그런거의 패키지를 자동으로 설치해주는? 느낌인 것 같다.. 자동화로 설치해줘서 짜증나는 오류들을 경험하지 않고 빠르게 설치해주는 엄청난 놈인 것 같다! VCPKG 설치하기 https://

cheongpark.tistory.com

 

VCPKG로 라이브러리 설치 중에 문제가 발생했다.

이상하게 깃허브에 표시된 최신버전과 설치되는 버전이 다르다는 것이다..

훨씬 낮은 버전.. 

 

그래서 생각해보다가 VCPKG의 버전이 잘 못 된 것 같다고 생각해서 보니..

역시나 업데이트가 안되어있어서 라이브러리가 안 떠있던 것 같다..

 

암튼 업데이트 방법!

vcpkg version

VCPKG의 버전을 확인합니다! 

Vcpkg package management program version 2019.08.27-nohash

See LICENSE.txt for license information.

이런식으로 버전이 뜰 텐데 뒤쪽에 2019.08.27 저 부분이 버전이라는 것!

 

현재 글쓰는 기준으로는 2023.12.12 입니다!

https://github.com/microsoft/vcpkg/releases

 

Releases · microsoft/vcpkg

C++ Library Manager for Windows, Linux, and MacOS. Contribute to microsoft/vcpkg development by creating an account on GitHub.

github.com

이 곳에서 최신버전을 확인하시면 됩니다.

 

여기에서 버전 확인한건.. 그냥 최신버전이 아닌지 확인하기 위한 것입니다!

 

암튼 이제 VCPKG를 업데이트 해야하는데.. 일단 먼저 VCPKG가 설치된 폴더로 이동합니다. cd 명령어로

저의 경우는 C:\dev\vcpkg에 있어서 이 명령어로!

cd C:\dev\vcpkg

 

그 후 아래 명령어를 입력해서 최신 레포로 업데이트 해줍니다.

git pull https://github.com/microsoft/vcpkg

 

그 후에는 여러가지 파일을 다운받고 업데이트 하게 되는데 전부 다 되면 아래 사진처럼 끝납니다.

딱히 끝났다는 표시는 없다는 것..

 

이제 설치를 해야합니다!

설치는 아래 명령어로!

bootstrap-vcpkg.bat

 

설치한 후에는 이렇게 뜨는데.. 굉장히 별거 없다는..

Downloading https://github.com/microsoft/vcpkg-tool/releases/download/2023-12-12/vcpkg.exe -> C:\dev\vcpkg\vcpkg.exe... done.
Validating signature... done.

vcpkg package management program version 2023-12-12-1c9ec1978a6b0c2b39c9e9554a96e3e275f7556e

See LICENSE.txt for license information.
Telemetry
---------
vcpkg collects usage data in order to help us improve your experience.
The data collected by Microsoft is anonymous.
You can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics,
passing --disable-metrics to vcpkg on the command line,
or by setting the VCPKG_DISABLE_METRICS environment variable.

Read more about vcpkg telemetry at docs/about/privacy.md

 

암튼 그 후에 다시 버전을 확인해보면?!

vcpkg package management program version 2023-12-12-1c9ec1978a6b0c2b39c9e9554a96e3e275f7556e

See LICENSE.txt for license information.

 

그리고 혹시 업데이트 되면서 Visual Studio와 연결이 안될 수도 있으니.. 다시 입력합니다!

vcpkg integrate install

 

그럼 이제 업데이트가 완료되었습니다.

 

만약 라이브러리를 모조리 업데이트 할려 한다면

vcpkg upgrade --no-dry-run

이렇게 하시면 아마 될겁니다.

 

반응형
반응형

학교에서 프로젝트를 받아버려서.. 해야하는 상황..

내 프로젝트를 위해선 DLIB와 OPENCV가 필요한데..

정말 2~3일동안 수없이 도전해보다가 굉장히 간단한 방법을 찾아서 알려줄까함! (왜이리 dlib는 잘 안깔리는거야)

 

일단 설치 방법은 요약하면 VCPKG를 설치해서 DLIB와 OPENCV를 설치하면 된다!

이미 VCPKG가 깔려있다면 2번으로 넘어가주세요.

1. VCPKG 설치하기

설치는 아래 링크로 들어가서 보시면 되겠습니다~~

https://cheongpark.tistory.com/15

 

윈도우에서 VCPKG 설치하기

VCPKG는 대충 C++ 그런거의 패키지를 자동으로 설치해주는? 느낌인 것 같다.. 자동화로 설치해줘서 짜증나는 오류들을 경험하지 않고 빠르게 설치해주는 엄청난 놈인 것 같다! VCPKG 설치하기 https://

cheongpark.tistory.com

 

2. dlib와 opencv 설치

vcpkg install dlib:x64-windows
vcpkg install opencv:x64-windows

위 명령어를 커맨드 창에 입력해주세요!

만약 vcpkg가 없는 명령어로 뜨면 환경 변수 설정이 안되거나 환경 변수 경로를 잘 못 지정했을 겁니다!

x64-windows는 vcpkg 패키지 리스트에서 보고 자기꺼에 맞는 걸로 선택하시면 됩니다!

 

이렇게 하면 모든 것이 설치 완료!!

이제 Visual Studio에서 include에서 사용하시면 됩니다!

// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt
/*

    This is an example illustrating the use of the perspective_window tool
    in the dlib C++ Library.  It is a simple tool for displaying 3D point 
    clouds on the screen.

*/

#include <dlib/gui_widgets.h>
#include <dlib/image_transforms.h>
#include <cmath>

using namespace dlib;
using namespace std;

// ----------------------------------------------------------------------------------------

int main()
{
    // Let's make a point cloud that looks like a 3D spiral.
    std::vector<perspective_window::overlay_dot> points;
    dlib::rand rnd;
    for (double i = 0; i < 20; i+=0.001)
    {
        // Get a point on a spiral
        dlib::vector<double> val(sin(i),cos(i),i/4);

        // Now add some random noise to it
        dlib::vector<double> temp(rnd.get_random_gaussian(),
                                  rnd.get_random_gaussian(),
                                  rnd.get_random_gaussian());
        val += temp/20;

        // Pick a color based on how far we are along the spiral
        rgb_pixel color = colormap_jet(i,0,20);

        // And add the point to the list of points we will display
        points.push_back(perspective_window::overlay_dot(val, color));
    }

    // Now finally display the point cloud.
    perspective_window win;
    win.set_title("perspective_window 3D point cloud");
    win.add_overlay(points);
    win.wait_until_closed();
}

//  ----------------------------------------------------------------------------

위 소스는 dlib.net의 기본 예제입니다.

위 소스를 Visual Studio에서 빈 프로젝트로 하나 만들고 소스 파일에서 test.cpp 하나 만들고 위 코드를 입력해서 실행해보시면 아주 잘 되는 것을 알 수 있습니다!

이런식으로 창이 나오면 잘 작동한다는 것이죠!

마우스로 회전도 되더라구요.. (그래프로 만들면 재밌겠다)

 

뭐 어쨌든 이 방식으로 설치했다면 빌드 폴더에 dll 파일도 나오는 경우가 있는데 이걸 같이 이동 시켜줘야지 다른 컴퓨터에서도 정상적으로 작동할 겁니다! (아무것도 설치 안되어있어도 잘 작동하더라구요.. 뭐 다른 한개는 설치해줘야 하긴 하는데..)

 

찾아보니 x64-windows-static 버전은 exe에다가 dll 파일 연결 안하고 모조리 다 때려 넣는 것 같군요! 하지만 설정은 더 힘드니 저 혼자만 하도록 하죠!

 

다만 맥이나 리눅스에서는 안될지도?

 

어쨌든 이만 끝!

VCPKG는 진짜 엄청나다..!

 

반응형
반응형

VCPKG는 대충 C++ 그런거의 패키지를 자동으로 설치해주는? 느낌인 것 같다..

자동화로 설치해줘서 짜증나는 오류들을 경험하지 않고 빠르게 설치해주는 엄청난 놈인 것 같다!

 

VCPKG 설치하기

https://vcpkg.io/en/getting-started.html 이 곳에도 설치 방법이 나와있습니다.

이 작업을 하기 전에 필수로 https://git-scm.com/ 깃을 설치해주세요.

 

1. VCPKG 다운로드!

cd / && mkdir dev && cd dev
git clone https://github.com/Microsoft/vcpkg.git

먼저 설치할 경로로 이동합니다.  보통 C 드라이브에 바로 설치하기 때문에 C로 맞춥니다.

대충 여기에서 dev 쪽으로 설치하라고 하니 dev 파일을 mkdir로 만들어줍니다.

그 후 dev 파일로 들어갑니다!

 

그 후 깃 클론으로 vcpkg를 다운 받습니다!

 

2. 아래 명령어로 vcpkg를 설치? 합니다.

.\vcpkg\bootstrap-vcpkg.bat

 

3. 환경 변수를 편집합니다.

커맨드 창에서 사용할 수 있게 환경 변수를 편집합니다.

 

1. 윈도우 검색창에 환경 치시고 "시스템 환경 변수 편집"을 선택해서 들어갑니다.

2. 그리고 여기에서 "환경 변수" 클릭!

 

3. 시스템 변수에서 Path를 찾아서 여세요!

4. 오른쪽 위에 "새로 만들기"를 클릭!

5. "C:\dev\vcpkg" 를 입력! (만약 다른 경로에 설치했다면 그 경로로 설정해주세요!)

입력 했다면 이런식으로 만들어졌을 겁니다! 그리고 확인!

 

4. Visual Studio 연결 (할꺼면 하시구 말꺼면 마시구)

이제 바로 Visual Studio에 연결할 수 있도록 합니다!

vcpkg integrate install

위 명령어를 치면 정상적으로 Visual Studio랑 연결되었을 겁니다!

 

사용법

패키지 설치할 때

vcpkg install <패키지:옵션>

만약 opencv를 설치한다면 "vcpkg install opencv:x64-windows" 이런식으로!

패키지는 https://vcpkg.io/en/packages.html 이쪽에서 검색한 후 있으면 입력해서 설치하시면 됩니다.

또한 x64-windows 같은 옵션은 리스트에 Compatibility나와있으니 잘 보고 입력해서 설치하시면 됩니다!

 

 

어쨌든 설치 완료~~

반응형

+ Recent posts