저번 글에서 빌드는 성공 하였으나, 결국 실행에는 실패 하였습니다.
그래서 GUI 상에서 디버깅을 해보는 방법을 어떨까 하는 생각이 들어서 시작해 보았습니다.
우선 실패 하였으나, clang 환경에서 우선 빌드를 다음과 같이 진행 하였습니다.
msys2 를 설치하고, 패키지를 업데이트 합니다. 그리고 다음과 같이 환경 설정 하였습니다.
clang64.exe 에서 작업 하였습니다.
pacman -S \
mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-gcc mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-cmake \
mingw-w64-clang-x86_64-make mingw-w64-clang-x86_64-toolchain base-devel git
pacman -S \
mingw-w64-clang-x86_64-boost mingw-w64-clang-x86_64-protobuf mingw-w64-clang-x86_64-lua \
mingw-w64-clang-x86_64-tbb mingw-w64-clang-x86_64-libzip mingw-w64-clang-x86_64-gdb
릴리즈 모드 작업
릴리즈 모드의 작업은 다음과 같이 하였습니다.
rm -Rf *
export SDK_PATH="C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64"
cmake -G "MinGW Makefiles" \
-DCMAKE_CXX_FLAGS="-DTOBEE" \
-DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS} -lws2_32 -lmswsock" \
-DDOXYGEN_EXECUTABLE=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Windows \
-DBOOST_INCLUDEDIR=/C/DEV/SDK/msys64/clang64/include/boost \
-DBOOST_LIBRARYDIR=/C/DEV/SDK/msys64/clang64/lib \
-DTBB_DIR=/C/DEV/SDK/msys64/clang64/lib/cmake/TBB \
-DTBB_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include\tbb \
-DLUA_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include \
-DLUA_LIBRARIES=/C/DEV\SDK/msys64/clang64/lib/liblua.a \
-DCMAKE_INSTALL_PREFIX=/C/DEV/GIS/OSRM/Backend_Exec/Release \
..
mingw32-make -j5
mingw32-make install
전처리기로 TOBEE 가 있는 데, 해결 할 수가 없어서 그냥 소스를 2개 건드렸습니다. 잘 알지도 못하는 내용이라 그냥 넘어가겠습니다...
여전히 나는 오류 메시지를 함 봐 줍니다..
디버그 모드에 대한 작업.
rm -Rf *
export SDK_PATH="C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64"
cmake -G "MinGW Makefiles" \
-DCMAKE_CXX_FLAGS="-g -Wa,-mbig-obj -Wmisleading-indentation -flarge-source-files -DTOBEE" \
-DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS} -lws2_32 -lmswsock" \
-DDOXYGEN_EXECUTABLE=OFF \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_SYSTEM_NAME=Windows \
-DBOOST_INCLUDEDIR=/C/DEV/SDK/msys64/clang64/include/boost \
-DBOOST_LIBRARYDIR=/C/DEV/SDK/msys64/clang64/lib \
-DTBB_DIR=/C/DEV/SDK/msys64/clang64/lib/cmake/TBB \
-DTBB_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include\tbb \
-DLUA_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include \
-DLUA_LIBRARIES=/C/DEV\SDK/msys64/clang64/lib/liblua.a \
-DCMAKE_INSTALL_PREFIX=/C/DEV/GIS/OSRM/Backend_Exec/Debug \
..
mingw32-make -j5
mingw32-make install
전처리기로 TOBEE 얘기는 했고..
다음과 같은 오류가 디버그 모드 빌드 시에 발생 했습니다.
C:/DEV/GIS/OSRM/osrm-backend/include/extractor/extraction_helper_functions.hpp:41:73: error: top-level comma expression in array
subscript is deprecated in C++20 and unsupported in C++23 [-Werror,-Wdeprecated-comma-subscript]
41 | hh = uint2_p[_pass = bind([](unsigned x) { return x < 24; }, _1), _val = _1];
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
여전히 나는 오류 메시지를 함 봐 줍니다..
비주얼 소스코드 설치
Visual souce code 사이트에서 설치 해 줍니다.
https://code.visualstudio.com/
C/C++ 확장 설치
그림파일을 함 봐주면 되겠습니다.
CMake 확장도 설치 해 준답니다. 그림 한 번 더 보고...
osrm 프로젝트를 열어 줍니다.
task.json, launch.json 파일 생성 및 작성
그러면 위에서 빌드한 내용을 비주얼 소스 코드에서 사용하기 위해서 ask.json, launch.json 파일을 작성해야 한다고 합니다.
task.json - 릴리즈 빌드의 경우
{
"version": "2.0.0",
"tasks": [
{
"label": "CMake Build",
"type": "shell",
"command": "cmake",
"args": [
"-G", "MinGW Makefiles",
"-DCMAKE_CXX_FLAGS=-DTOBEE",
"-DCMAKE_EXE_LINKER_FLAGS=-lws2_32 -lmswsock",
"-DDOXYGEN_EXECUTABLE=OFF",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_SYSTEM_NAME=Windows",
"-DBOOST_INCLUDEDIR=/C/DEV/SDK/msys64/clang64/include/boost",
"-DBOOST_LIBRARYDIR=/C/DEV/SDK/msys64/clang64/lib",
"-DTBB_DIR=/C/DEV/SDK/msys64/clang64/lib/cmake/TBB",
"-DTBB_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include/tbb",
"-DLUA_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include",
"-DLUA_LIBRARIES=/C/DEV/SDK/msys64/clang64/lib/liblua.a",
"-DCMAKE_INSTALL_PREFIX=/C/DEV/GIS/OSRM/Backend_Exec/Release",
".."
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Make Build",
"type": "shell",
"command": "make",
"args": [-j5],
"group": {
"kind": "build",
"isDefault": false
},
"problemMatcher": []
}
]
}
task.json - 디버그 빌드의 경우
{
"version": "2.0.0",
"tasks": [
{
"label": "CMake Build",
"type": "shell",
"command": "cmake",
"args": [
"-G", "MinGW Makefiles",
"-DCMAKE_CXX_FLAGS=-g -Wa,-mbig-obj -Wmisleading-indentation -DTOBEE",
"-DCMAKE_EXE_LINKER_FLAGS=-lws2_32 -lmswsock",
"-DDOXYGEN_EXECUTABLE=OFF",
"-DCMAKE_BUILD_TYPE=Debug",
"-DCMAKE_SYSTEM_NAME=Windows",
"-DBOOST_INCLUDEDIR=/C/DEV/SDK/msys64/clang64/include/boost",
"-DBOOST_LIBRARYDIR=/C/DEV/SDK/msys64/clang64/lib",
"-DTBB_DIR=/C/DEV/SDK/msys64/clang64/lib/cmake/TBB",
"-DTBB_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include/tbb",
"-DLUA_INCLUDE_DIR=/C/DEV/SDK/msys64/clang64/include",
"-DLUA_LIBRARIES=/C/DEV/SDK/msys64/clang64/lib/liblua.a",
"-DCMAKE_INSTALL_PREFIX=/C/DEV/GIS/OSRM/Backend_Exec/Debug",
".."
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Make Build",
"type": "shell",
"command": "make",
"args": [],
"group": {
"kind": "build",
"isDefault": false
},
"problemMatcher": []
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug OSRM",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main", // 빌드된 실행 파일 경로
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 디버깅 시 콘솔을 별도로 열기
"MIMode": "gdb", // GDB 디버거 사용
"miDebuggerPath": "C:/DEV/SDK/msys64/clang64/bin/gdb.exe", // MSYS2의 GDB 경로 설정
"preLaunchTask": "build", // 디버깅 전에 빌드 작업을 실행
"miDebuggerArgs": "-q", // GDB 인수
"logging": {
"moduleLoad": false,
"programOutput": true,
"engineLogging": false
}
}
]
}
위 처럼 해 준 뒤에, 전역으로 환경설정을 잡아주기 싫어서 다음과 같이 쉘을 만들어서 다시 실행 했습니다.
SET MSYS2_PATH=C:\DEV\SDK\msys64
SET CLANG_PATH=%MSYS2_PATH%\clang64
SET PATH=%CLANG_PATH%\BIN;%PATH%;.
call "C:\DEV\IDE\Microsoft VS Code\Code.exe"
그러고 나면 뭔가 비슷한 것이 나오긴 했는 데...
'프로그래밍' 카테고리의 다른 글
[Windows 환경] MSYS2, MinGW64 용 OSRM 빌드하기 (0) | 2024.11.28 |
---|---|
[Windows 환경] MSYS2, Clang64 및 Visual Studio Code (0) | 2024.11.25 |
Spring Boot AOP (0) | 2024.02.27 |
JGroups-Spring In Action (0) | 2024.02.26 |
JDBC_PING을 사용하여 클러스터 노드를 검색하는 방법 (0) | 2024.02.23 |