CMake-gui를 Qt5환경으로 빌드하기

빌드하게 매우 귀찮아 CMake를 MSI 패키지로 설치를 하다가 매우 오랜만에 직접 빌드해보았다. (대신 MSYS2를 깔아야한다.) 전에는 Qt4를 사용했기때문에 쉽게 빌드된거같은데 Qt5를 사용한 GUI 환경을 빌드하려하니 구글링도 안되어 꽤나 삽질했다. CMakeLists.txt를 열어보면 Qt5를 지원하는 모양이였지만 find_package(Qt5Widgets QUIET)구문이 어떻게 동작하는지 알 수 없어 리눅스 환경에서 bootstrap을 실행하여 생성된 CMakeCache.txt 파일을 직접 분석하여 찾아본 결과 -DBUILD_QtDialog=ON -DQT_QMAKE_EXECUTABLE=D:\OpenSource\Qt5.15.0.x64\bin\qmake.exe -DQt5Widgets_DIR=D:\OpenSource\Qt5.15.0.x64\lib\cmake\Qt5Widgets 이렇게 변수를 설정하면 된다는것을 알게되었다.

자세한 내용은 CMake 소스코드에서 README.rst 파일을 열어보면 되고 이미 빌드된 CMake가 없는 상태에서 간략한 빌드과정은

MSYS2를 설치한다. 설치완료 후 MSYS2를 실행하고 pacman -S --needed git base-devel mingw-w64-x86_64-gcc 명령으로 필요한 패키지를 설치한다. (git는 필요없어보이지만 README.rst에서 설치하라고하니..) 그 후 exit 명령으로 쉘을 종료하고 시작메뉴에서 MSYS2 MinGW 64bit를 실행한다. 이렇게 기본 빌드환경은 끝.

3.18.1버전의 cmake를 압축 풀었다면 폴더 이름이 cmake-3.18.1일것이다. 압축 푼 경로가 D:\OpenSource\cmake-3.18.1 이라면 cd /d/OpenSource 명령으로 폴더 이동 후 임의 폴더 생성한다. (cmake-build1로 만들었다.) cmake-build1 폴더에서 ../cmake-3.18.1/configure –prefix=/d/OpenSource/cmake-bootstrap 명령을 실행 후 make && make install 명령을 실행하여 빌드 및 바이너리를 설치한다. 이렇게 bootstrap 환경은 완료.

Visual Studio의 64비트 툴 콘솔을 실행하여 set PATH=%PATH%;C:\msys64\mingw64\bin 명령을 수행 후(msys2를 기본 경로에 설치했을경우) D:\OpenSource\cmake-build2 폴더를 생성 & 이동하여 ../cmake-bootstrap/bin/cmake ..\cmake-3.18.1 -DCMAKE_INSTALL_PREFIX=D:\OpenSource\cmake -DBUILD_QtDialog=ON -DQT_QMAKE_EXECUTABLE=D:\OpenSource\Qt5.15.0.x64\bin\qmake.exe -DQt5Widgets_DIR=D:\OpenSource\Qt5.15.0.x64\lib\cmake\Qt5Widgets 이렇게 실행하면 Visual Studio Solution 파일(CMake.sln)이 생성된다. (nmake 타겟으로 생성가능하지만 VS 솔루션 파일에서 빌드하면 병렬빌드가 되기에 그냥 기본 타겟으로 생성하였다.) 이제 솔루션 파일을 열고 빌드 형식을 Release / x64로 설정하여 CMakePredefinedTargets/ALL_BUILD 프로젝트를 우클릭하여 빌드 메뉴를 선택한다. 모두 빌드되면 CMakePredefinedTargets/INSTALL 프로젝트를 우클릭하여 빌드 메뉴를 선택하면 CMAKE_INSTALL_PREFIX로 설정된 D:\OpenSource\cmake에 CMake가 설치된다.

D:\OpenSource\cmake\bin\cmake-gui.exe 파일을 실행하면 DLL 종속성 오류가 뜰것이다. 명령 프롬포트에서 D:\OpenSource\cmake\bin 폴더로 이동 후 D:\OpenSource\Qt5.15.0.x64\bin\windeployqt.exe cmake-gui.exe 명령을 실행하면 종속된 파일이 전부 복사되고 이제 cmake-gui.exe를 실행하면 아래와같이 GUI 환경의 cmake 프로그램이 실행된다.

이제 필요한것들을 빌드해야겠다. 실행도 깔끔하게 잘 되니 이것으로 끝!

PS4 Remote 로그인 문제 해결

포맷 후 오랜만에 PS4 Remote로 플스에 접속하려고하니 아래와같이 ‘서버에 연결할 수 없습니다.’라는 메시지가 출력되었다.

몇번 시도하면 되겠지 하고 오기로 로그인 해보려하니 마찬가지. 다른 사람들도 겪을 문제일거같아 구글링해보니 아래와같은 영상이 나왔다.

영상의 업로드 날짜는 4월 23일. 최소한 이것보다 더 전부터 발생하던것인거같다. 지금보다 약 두달 전 부터 있던 문제인것. 많은 유저가 버그리포트 했을것이고 왜 아직도 해결안되고 있는지 이해가 되지않는다.

혹시모르니 간략하게 요약

1. 로그인 화면에서 우클릭
2. ‘속성’ 선택
3. 주소(URL) 우측의 주소를 복사(더블클릭 속도로 빠르게 세번 클릭하면 전체선택됨)
4. ‘속성’ 창 닫고, 브라우저의 주소에 붙여넣기 후 엔터(브라우저는 무엇을 사용해도 상관없음)
5. 로그인 후 주소 표시줄의 주소를 복사
6. PS4 Remote의 로그인 창을 클릭한 후 컨트롤 + L
7. 브라우저에서 복사한 주소를 붙여넣고 [확인] 클릭

브라우저의 주소가 변경되면 code와 cid를 읽고 사용자 정보를 읽는것으로 보인다. 윈도에서 유난히 자주 볼 수 있지만 브라우저를 프로그램 내 넣어서 무언가를 하면 브라우저가 업데이트 된 이후 없던 문제가 발생할 수 있는데… PS4 Remote에서도 시스템 브라우저의 어딘가 바뀐 정책으로 로그인 진행이 안되는거같다. 이런 문제를 되도록 피하려면 브라우저를 직접 프로그램에 포함하면되지만 라이선스 문제나 용량이 필요이상으로 늘어날 수 있기때문에 시스템 브라우저를 넣는것이겠지만 요즘같은 때 10~20메가 용량때문에 그럴 필요가 있을까? 싶다.

암튼 해결되었으니 다행. 그런데 두달 넘도록 이런 문제하나 수정하지못하고 뭘하는걸까?

The Last of Us PART 2 후기(?)

The Worst of US.

4일동안 약 세시간 정도씩, 그리고 아래 스크린샷과같이 누적플레이 14시간 쯤 된 5일차에 약 13시간을 쉬지않고 엔딩까지 달렸다. (꼼꼼하게 파밍하지않았다면 1/3정도의 플레이타임이 줄어들지않았을까. 생각이 들지만.)

기록 남기기 용도로 트위치에 송출하면서 플레이 한 5일차 스샷

첫째날 2시간 반 플레이 후 2일차엔 다른 스트리머가 2시간 플레이 한 시점을 보니 많은 유저들이 1차로 빡쳐하는 장면이였다. 더 보면 채팅에서 스포당할거같아서 멈추었다. 나도 여기에서 매우 허무하긴했지만 나이도 들었고 4년동안 평화로운 일상을 보낸 캐릭터이니까 한순간의 방심을 할 수 있겠지라고 생각하고 계속 플레이 하였다. (충분한 배경없이 그냥 펑 하고 날려먹은건 그간 많은 수작을 남긴 회사가 보일 행위는 아니였지만.)

리뷰를 안보고 스포일러도 접하지않고 최대한 객관적으로 생각해야지… 라고 플레이하면서 정말 이상하게 흘러가는구나 싶은 생각이 들기 시작한것이 극장에서 아침드라마에서 나올법한 소재가 나왔을 때였다. 동성애자도 있으니까. 라며 일부는 애써 넘어갔지만, 그 후 보통 사람이 이 타이밍에 이런 뜬금없는 행동을 하긴할까? 싶은 장면도 못해도 세네번은 있었고 ‘어?’하는 생각이 드는 장면또한 네다섯개는 본거같다. 이걸 어떻게 수습하려고? 하는 생각은 덤.

파트 2의 시작챕터를 ‘전환점’으로 봤을 때 이것을 기준으로 현재 -> 과거 -> 현재 -> (반복) -> 미래 이런식으로 자꾸 왔다갔다하는 구성은 싫어하는 구성이기도해서 더 비호감이였다. 아마 내가 라오어 파트2의 스토리로 게임을 만들었다고 친다면, 애비를 처음부터 플레이하게하고 전환점 직전까지 진행, 그리고 엘리를 전환점 직전까지 플레이, 그리고 전환점을 진행하도록 하지않았을까 생각이 든다. (근데 이렇게하면 전환점을 경험하고 ‘내가 열시간 넘는 시간동안 뭘 해온거지?’하는 현타 비슷걸 겪어서 그것 나름대로 빡쳤을거같다. 차라리 입구컷 당하는게 더 현명한건가?)

결국 엔딩까지 진행하면서 남은건 ‘누구하나 기복이 납득되지않는 캐릭터들’, ‘누구도 행복할 수 없고 대부분 정상적인 생활이 불가능하게 망가져버린 캐릭터들’, 그래도 긍정적으로 볼 수 있는건 좀 더 복잡해진 전투, 조엘과 엘리의 1편 이후의 이야기, 그리고 병원에서의 일을 어떻게 대화로 풀었는지 나타났다 정도인거같다. (트위치에서 채팅을 보면 병원에서의 일을 대화로 푸는 장면마저 혹평이 많았지만 진실을 계속 요구했던 엘리와는 다르게 조엘은 계속 거짓말로 숨기려했던 점, 엘리가 자라온 환경이 좋지 않았기때문에 보통 사람이 예상한 반응과 다른 행동을 했을 수 있겠다는 생각이 든다. 그건 그거고 아마 전투가 맘에안들었으면 진심 시간과 돈까지도 아까웠을지도?)

마지막으로, 라오어는 황무지 난이도까지 클리어했고, 멀티플레이 트로피까지 도전을 했지만 파트 2는… 모르겠다. 엔딩을 보고나서 트로피를 모으려는 생각이 안든다. 아무리 전투가 맘에들었어도 주인공들처럼 엔딩을 본 나까지도 지쳐버린걸까? 단 하나의 게임으로 84년 설립된 너티독의 수많은 팬들을 등돌리게 만든 ‘닐 드럭만’에게 기립박수를 마음에 담아 보내주도록 해야겠다. 분명 온갓 비난을 받을 것이 눈에 보였을것임에도 까라는 대로 만들었던 개발진들에게 위로의 박수를 마음에 담아 보내두도록 해야겠다.

덧) 말많은 페미니즘이나 PC 사상이 게임을 망쳤다는 말은… 난 잘 모르겠다. 그 사상이 게임을 망쳤다기보다는 닐 드럭만의 신념이였는지, 아니면 말 못할 외부 압력이였는지 모르겠지만 결국 플레이어가 캐릭터의 감정이나 기복을 이해할 수 없는 시나리오를 최종적으로 뽑아낸 닐 드럭만, 또는 그렇게 압력을 넣은 사람이 있다면 그 사람이 문제라고 생각된다. (그게 그건가? 그게 그거라면 그정도로 혼란스럽다는 것일 듯.)

끝.

macOS의 Dock, 모니터간의 이동

짧은 글.

그간 맥의 Dock이 다른모니터로 멋대로 이동하는 현상때문에 매번 고생고생하다가 명확하게 옮기는 방법을 터득(?)하였다. 트랙패드를 위에서 아래로 쓸어내리듯 제스쳐를 하면된다는 글을 보고 아무리해도 잘 안되어서 그냥 아무생각없이 느리게 위에서 아래로 포인터를 움직였더니 한번에 잘 이동되었다(…).

짧게 요약하자면 화면의 최하단 포인터가 완전하게 바닥으로 내려가도록 마우스 포인터를 이동. 그 이후 트랙패드 상단에 손가락 하나로 터치하여 트랙패드 바닥부분까지 약 2~3초정도 걸릴정도로 느리게 일정한 속도로 스윽~ 손가락을 내리면 바로 옮겨졌다. 이런 방식으로 몇번씩 해보면서 그 속도가 익으니까 트랙패드 공간의 절반만 활용해도 너무나도 편하게 Dock을 윈하는 모니터로 이동이 가능하게되었다(…).

MariaDB 10버전 설치안될 때

딸랑 윈도 10만 설치된 환경에서 마리아DB를 설치하니 뜬금없이 롤백이 되어버렸다. msi로 만들어진 패키지 대부분은 공통같지만 오류가났으면 로그를 보여주던지 해야할텐데 로그를 참조할 수 있도록 하이퍼링크로 로그파일을 볼 수 있게 보여주는건 그다지 못본거같다. msi의 문제라고 해야할지 패키지를 만드는 사람의 문제라고 해야할지 모르겠지만.

본론으로 들어가면 로그를 보기위해 구글링해보니 msiexec /i “MSI 파일이름” /l*v install.log 이렇게 실행하면 로그파일을 원하는 위치에 생성가능하다. 그렇게 롤백이라는 문구를 검색해보니 아래와같은 로그가 남아있었다.

CAQuietExec: Running bootstrap
CAQuietExec: Executing “”C:\Program Files\MariaDB 10.4\bin\mysqld.exe” –no-defaults –console –innodb-page-size=16384 –bootstrap “–lc-messages-dir=C:/Program Files/MariaDB 10.4/share” –basedir=. –datadir=. –default-storage-engine=myisam –max_allowed_packet=9M –net-buffer-length=16k”
CAQuietExec: ERROR: Can’t write to mysqld’s stdin
CAQuietExec: FATAL ERROR: database creation failed
CAQuietExec: https://mariadb.com/kb/en/installation-issues-on-windows contains some help
CAQuietExec: for solving the most common problems. If this doesn’t help you, please
CAQuietExec: leave a comment in the Knowledge Base or file a bug report at
CAQuietExec: Error 0x80070001: Command line returned an error.
CAQuietExec: Error 0x80070001: QuietExec Failed
CAQuietExec: Error 0x80070001: Failed in ExecCommon method
CustomAction CreateDatabase returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

은근슬적 들어간 https://mariadb.com/kb/en/installation-issues-on-windows 링크로 들어가고 아무것도 깔리지않은 윈도에서 심심치않게 겪어본 재배포 패키지 문제때문에 딴건 신경안쓰고 https://aka.ms/vs/16/release/vc_redist.x64.exe 이 링크로 재배포 패키지를 설치하고 MariaDB를 설치하니 잘 설치되었다(…)

사실 installer라고하면 이런 필요한 패키지를 검사하거나 필수로 깔아야하는게있을경우 설치 실패시 저 페이지의 링크로 방문하라고 메시지가 뜨거나 다운 받아서 설치하도록 둘 중 한가지로 해야할텐데 뜬금없이 롤백되고 하이퍼링크같이 명확하게 보여주지도않고 Finish 버튼이 딱 뜨는건 음… 납득불가다. 덕분에 한시간가량 손해봤지만 그래도 한가지 경험을 하게되었다(…).