반응형

전체 글 261

[CMake] VS 2022 CMakePresets error using toolset

VS 2022 최신 버전에서 CMake를 지원해주는데 이번 최신 피처에 Configuration 관련해서 다양한 기능을 제공한다길래 사용해보려고 했다. 결론은.. Error로 인해 적용못했지만, 깃헛 이슈에도 물어보고 한번 처리해 봐야할듯하다. 이것이 된다면, Ninja 제너레이터에서 VS 2022 IDE로 v141 2017 툴셋으로 쉽게 환경을 구성하고 빌드할수 있을것 같다. 먼저, CMakePresets.json을 보자 "configurePresets": [ { "name": "debug", "description": "default debug preset", "hidden": true, "installDir": "${sourceParentDir}/install/debug", "cacheVariabl..

C , C++, C# 2023.06.05

Git ip 주소 또는 URL 변경시 적용

IP 주소가 바뀌면서 기존에 작업하던 모든 주소가 바뀌게 되었다. 물론 system 폴더의 hosts 파일의 내용에 URL로 적용되어 있다면 문제가 없을거 같은데 필자는 IP 주소를 이용하고 있었다. IP 주소가 바뀌니 Git 레포지토리의 갱신, 푸시 등의 모든 기능이 멈추어 있었다. 기존 로컬의 레포지토리르 바뀐 IP로 변경하여 적용시켜야 한다. https://stackoverflow.com/questions/2432764/how-do-i-change-the-uri-url-for-a-remote-git-repository How do I change the URI (URL) for a remote Git repository? I have a repo (origin) on a USB key that I ..

[WSL] WSL not working.. and Ubuntu exe binary chmod

필자는 C++ 바이너리를 Windows와 Linux 상으로 빌드하곤 하는데.. Linux는 로컬에서 WSL로 연동하여 사용한다. 그러다.. WSL2 가 멈추는 경우가 아주 한번씩 있다. CLion으로 연동된 WSL의 cmake가 작동하지 않는데.. WSL 커맨드 창이 시작되지 않고... 윈도우에서 wsl 키워드가 먹히지 않는다 아무리 재부팅을 하고 뭔 짓을 해도 안될때.. 아래의 링크를 확인해 볼수 있다. https://github.com/microsoft/WSL/issues/5836 WSL don't start, don't open and don't answer · Issue #5836 · microsoft/WSL Environment Windows build number: 20197.1000 WSL ..

Ubuntu, Android 2023.01.09

[기본] char* / char [] in C

이걸 다시 볼일은 없을것 같지만 기록해두자 왜 런타임 에러가 발생하는지 생각해보고 아래의 답을 확인할 수 있다. https://www.geeksforgeeks.org/whats-difference-between-char-s-and-char-s-in-c/ What's difference between char s[] and char *s in C? - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/comp..

C , C++, C# 2023.01.05

Cmake에서 WIN 매크로

개발하거나 유지보수할때 보면.. WIN32 관련 매크로가 정말 많다. 보통 _WIN32는 32bit 윈도우, _WIN64 는 64bit 윈도우라 생각할수 있는데... 그것이 아니었다 https://stackoverflow.com/questions/6679396/should-i-define-both-win32-and-win64-in-64bit-build Should I define both _WIN32 and _WIN64 in 64bit build? When we add a 64bit configuration from a 32bit project that has already existed, Visual Studio copies the 32bit configurations by default. VS eve..

C , C++, C# 2022.12.15

[Visual Studio] 릴리즈 바이너리 디버깅하기

신기하게도.. 디버그 바이너리에서는 문제가 없는데... 테스트 코드의 릴리즈 바이너리에서는 Gtest가 실패하는게 문제였다. 그래서.. 릴리즈 바이너리도 디버깅이 되는가 해서 좀 찾아보았다. https://learn.microsoft.com/en-us/cpp/build/how-to-debug-a-release-build?view=msvc-170 How to: Debug a Release Build Learn more about: How to: Debug a Release Build learn.microsoft.com 다행히 MSVC의 공식 문서에서 확인할 수 있다. 내용을 보면 누구나 쉽게 적용할 수 있다. CMake로 제너레이터가 되어 있고 전체 프로젝트가 하도 많고 커서.. 다 하는건 불가능했고 문제..

C , C++, C# 2022.12.07

[Visual Studio 2022] VS 2022 크로스 플랫폼 빌드: CMakepprest.json

먼저, MS의 설명을 보면 아래와 같다. https://youtu.be/yImev317_Ns 드디어 CLion이 아닌 VS에서 크로스 플랫폼으로 윈도우와 리눅스에서빌드하고 디버깅할수 있기를 기도할수 있게 되었다. 또한, VS Generator가 아닌 Ninija등으로도 다양하게 디버깅 모드와 릴리즈 모드를 기대할수 있다. 이제 한번 적용한 것들을 정리해보고자 한다. 1. 동영상처럼 VS의 옵션에서 여러가지 세팅할수 있다. VS 2022에서는 CMakepreset.json의 유무를 가지고 크로스플랫폼을 빌드할수 있다. 따라서 해당 파일이 필수적이라고 보면 된다. CMakeSettings.json은 잘 모르니 넘어간다. 하지만, 여러 시작도 전에 몇개 이상한것들이 있다. 하나씩 확인해보면 아래와 같다. 간단..

C , C++, C# 2022.11.07

[Ubuntu] 성능평가: perf 사용하기

성능 평가를 해야할 일이 있는데.. 과연 이 작업이 유효한가.. 다른 많은 도구들이 있는데 찾아보면 되고.. 그중 FlameGraph를 그릴수 있는 perf + FlameGraph 튜토리얼을 작성하고자 한다. Linux에서는 이것을 사용하고 Windows에서는 vTune이나 AMD uprof를 사용하면 좋다. VS의 성능 프로파일러로는 음 뭔가 확인하는 근거가 어렵다. 먼저 perf + FlameGraph 는 아래의 문서에서 확인할 수 있다. https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html CPU Flame Graphs CPU Flame Graphs Determining why CPUs are busy is a routine task for p..

Ubuntu, Android 2022.10.17

[Visual Studio] LNK2019: unresolved external symbol

링크 에러... 왜 못찾는 것일까.. 라이브러리를 덤프했을때 외부 기호가 extenral로 함수 이름이 정확히 있었다... 그러면 보통 라이브러리만 링크해도 문제가 없어야 하는데.. 도저히 못할줄 알았지만 다행히 공식 문서와 stackoverflow를 통해 해결할 수 있었다. 원인은 함수 기호 이름의 문제였다. 내가 작업하는 솔루션은 cpp이지만, 라이브러리로 만들어 사용하려는 솔루션은 모두 C 파일이다... 여기서 아는 사람은 cpp의 name mangling에 대해 알고 있을것이다. C 언어와 cpp 언어는 다르며 해당 규약들과 이름에 대해 다르기때문에 똑같이 맞춰줄 필요가 있다... C++ 프로그램에서 런타임 라이브러리 함수를 사용할 수 있도록 하는 구문인 extern "C" 를 사용해서 간단히 해..

C , C++, C# 2022.09.08

[Visual Studio] 라이브러리 덤프하기

c++ softfloat 써드 파티를 사용해야 하는데 이를 라이브러리로 빌드하여 필요한 모듈에 링킹하는 작업이 필요하다. 그런데.. 계속해서 링킹에러가 발생해서.. 열심히 하던중.. CMake Configuration을 잘못했는지 원본의 make를 제대로 안했는지.. 알 길이 없다. 결국 처음부터 다시 시작해 원본의 makefile과 같도록 헤더와 소스파일을 활용하여 컴파일 및 빌드까지 완료해서 라이브러리를 새로 만들었다. 하지만 다른 모듈과 링킹 에러이다... 해당 기호가 진짜 라이브러리에 없는건가.... 이제 라이브러리를 뜯어봐야되는데 어떻게 뜯을 수 있는지 간단히 알아보자. Visual Studio 2022에서 Cmake 프로젝트를 만들면 간단한 샘플 파일을 얻을 수 있다. 샘플 코드는 아래와 같다..

C , C++, C# 2022.09.05
반응형