CLion은 IDE 창 내에서 사용할 수 있는 터미널 기능을 제공한다. 아래와 같이 편집창 하부에 터미널 창을 열어서 각종 작업을 수행할 수 있다. (창의 위치는 변경 가능하며, 편집창과 동일하게 독립적인 창으로 분리할 수도 있다) 현재 진행 중인 프로젝트에서는, CLion을 이용해서 코드를 작성하고 터미널 창(리눅스 도커 실행)에서 빌드를 수행하고 있다. 종종 스크립트를 수정하기 위해 vi 에디터를 사용하는데, 편집 후 저장을 하고 vi 에디터를 빠져 나오려면 Escape(ESC) 키를 눌러야 한다. 그런데, CLion의 터미널 창은 기본적으로 Escape(ESC) 키가 편집창으로 포커스를 전환하는 기능에 대한 키로 지정되어 있어, 터미널에서 실행중인 쉘에 ESC 키 입력이 전달되지 않는다. 즉, vi..
Git에서 브랜치를 변경하려고 git checkout 명령을 입력하였더니 아래와 같은 에러가 발생하였다. error: packfile .git/objects/pack/pack-7765263443e82381c8090bcc3f4132f0e62fe895.pack claims to have 679 objects while index indicates 769 objects 해당 브랜치에서 아직 commit 하지 않고 Stash 해 놓은 변경 코드가 있었기 때문에, 공포를 느꼈다... 다행히 구글링을 통해 다음과 같이 해결하였다. 1. 일단 프로젝트 디렉토리를 백업한다. (다른 경로에 복사해 놓는다) → 최악의 상황을 방지하기 위해. 2. 에러가 출력된 각 pack 파일들에 대해 다음 명령을 실행한다. mv .gi..
CMake에서 링커 옵션을 지정해 주고자 할 경우 target_link_options() 커맨드를 사용할 수 있다. 특정 링커 옵션을 지정하고자 할 경우, 해당 링커 옵션을 다음과 같이 target_link_options() 커맨드 내에 그대로 적어주면 된다. target_link_options( [linker option]) 다음은 hello.c 파일을 빌드할 때 "-Wl,--hash-style=gnu -Wl,--as-needed"라는 링커 옵션을 주는 CMakeLists.txt 파일의 예시이다. set(TARGET_APP hello) add_executable(${TARGET_APP} hello.c) target_link_libraries(${TARGET_APP} PRIVATE pthread) tar..
Visual studio code(vscode)는 편집기 상에서 새로운 파일을 생성하거나 편집기에 열려 있는 파일을 업데이트 저장할 때, 저장되는 파일의 저장 형식을 지정할 수 있다. 정확하게는 EOL(End Of Line)이라고 불리는 줄 바꿈 문자를 지정할 수 있다. 줄 바꿈 문자(End Of Line, EOL)란? 텍스트 파일의 경우, 각 줄이 끝났음을(즉, 줄이 바뀌는 것을) 표시하기 위해 각 줄의 마지막에 줄 바꿈 문자(End Of Line, EOL)라고 불리는 특수문자가 추가로 저장된다. 이러한 줄 바꿈 문자(End Of Line, eol)는 공통으로 약속된 형식을 사용하게끔 되어 있어, 해당 텍스트 파일을 사용하는 시스템(장치)의 종류나 특성에 무관하게 동일하게 해석되어 사용될 수 있다. 다..
개요 본 글에서는 CMake를 이용하여 빌드할 때, 특정 디렉토리를 다른 곳으로 복사하는 방법을 소개한다. 본 글에서 사용된 환경은 다음과 같다. CMake 실행 및 빌드 환경 : 우분투 리눅스 18.04 CMake 버전 : 3.13.2 CMakeLists.txt에 디렉토리 복사 명령문 작성하기 CMakeLists.txt 파일에 add_custom_command() 명령문을 작성하여, 타겟 빌드 시에 특정 디렉토리를 복사할 수 있다. add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${FROM_DIR} ${TO_DIR}) 위 명령문에서 작성자의 의도에 따라 변경될 수 있는 부분은 각각 다음과 ..
개요 본 글에서는 CMake를 이용하여 빌드할 때, 특정 디렉토리를 삭제하는 방법을 소개한다. 본 글에서 사용된 환경은 다음과 같다. CMake 실행 및 빌드 환경 : 우분투 리눅스 18.04 CMake 버전 : 3.13.2 CMakeLists.txt에 디렉토리 삭제 명령문 작성하기 CMakeLists.txt 파일에 add_custom_command() 명령문을 작성하여, 타겟 빌드 시에 특정 디렉토리를 삭제할 수 있다. add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove_directory ${DIR}) 위 명령문에서 작성자의 의도에 따라 변경될 수 있는 부분은 각각 다음과 같다. ${TARGET} : 빌드 타..
개요 본 글에서는 CMake를 이용하여 빌드할 때, 디렉토리를 생성하는 방법을 소개한다. 본 글에서 사용된 환경은 다음과 같다. CMake 실행 및 빌드 환경 : 우분투 리눅스 18.04 CMake 버전 : 3.13.2 CMakeLists.txt에 디렉토리 생성 명령문 작성하기 CMakeLists.txt 파일에 add_custom_command() 명령문을 작성하여, 타겟 빌드 시에 디렉토리를 생성할 수 있다. 예를 들어 빌드 결과 파일을 특정 디렉토리를 생성하여 복사하고자 할 때 사용할 수 있다. add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${DIR}) 위 명령문에서 작성자의 의도에 따..
개요 본 글에서는 CMake를 이용하여 빌드할 때, 특정 파일을 삭제하는 방법을 소개한다. 본 글에서 사용된 환경은 다음과 같다. CMake 실행 및 빌드 환경 : 우분투 리눅스 18.04 CMake 버전 : 3.13.2 CMakeLists.txt에 삭제 명령문 작성하기 CMakeLists.txt 파일에 add_custom_command() 명령문을 작성하여, 타겟 빌드 시에 원하는 파일을 삭제할 수 있다. add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove ${DELETE_FILE}) 위 명령문에서 작성자의 의도에 따라 변경될 수 있는 부분은 각각 다음과 같다. ${TARGET} : 빌드 타겟 (예: add_..
개요 본 글에서는 CMake를 이용하여 빌드할 때, 특정 파일을 원하는 디렉토리로 복사하는 방법을 소개한다. 본 글에서 사용된 환경은 다음과 같다. CMake 실행 및 빌드 환경 : 우분투 리눅스 18.04 CMake 버전 : 3.13.2 CMakeLists.txt에 파일 복사 명령문 작성하기 CMakeLists.txt 파일에 add_custom_command() 명령문을 작성하여, 타겟 빌드 시에 원하는 파일을 원하는 디렉토리로 복사할 수 있다. add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${FROM} ${TO}) 위 명령문에서 작성자의 의도에 따라 변경될 수 있는 부분은 각각 다음과 같다. ${TARG..
MacOS에 CLion(2020.3.4 버전)을 설치하여 사용하고 있었는데, MacOS를 Big Sur로 업데이트한 후에 CLion에서 CMake를 reload해 보니 다음과 같은 에러가 발생하였다. /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/gyun/workspace/v2x-sw CMake Warning at /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.17/Modules/Platform/Darwin-Initialize.cmake:286 (message): Ignor..
CLion은 편집기 상에서 새로운 파일을 생성하거나 편집기에 열려 있는 파일을 업데이트 저장할 때, 저장되는 파일의 저장 형식을 지정할 수 있습니다. 정확하게는 Line separator라고 불리는 줄 구분자의 형식을 정해 줄 수 있습니다. 줄 구분자(Line separator)란? 텍스트 파일의 경우, 각 줄이 끝났음을(즉, 줄이 바뀌는 것을) 표시하기 위해 각 줄의 마지막에 줄 구분자(Line separator)라고 불리는 특수문자가 추가로 저장됩니다. 이러한 줄 구분자는 공통으로 약속된 형식을 사용하게끔 되어 있어, 해당 텍스트 파일을 사용하는 시스템(장치)의 종류나 특성에 무관하게 동일하게 해석되어 사용될 수 있습니다. 다만, 우리가 주로 사용하는 양대 운영체제 별로 서로 다르게 사용하고 있어 이..
CLion은 함수의 각 인자들에 대한 힌트를 제공하는 기능을 지원합니다. 다음 화면을 보면 calloc() 함수의 첫번째 인자와 두번째 인자로 어떤 값이 입력되어야 하는지에 대한 힌트를 제공하는 것을 알 수 있습니다. 이는 편리한 기능이기는 하지만, 개인적으로는 출력된 힌트로 인해 코드 라인이 실제로 차지하는 길이와 보이는 길이가 달라 불편함을 느낍니다. 이에 힌트 기능을 꺼 보도록 하겠습니다. 본 글에서 사용된 CLion 버전은 MacOS용 2020.3.3 버전입니다. "CLion" → "Prefrences" 메뉴를 선택하여 설정 창을 띄운 후, 좌측 선택 창에서 "Editor" → "Inlay Hints" → "C/C++" 항목을 선택합니다. 아래 화면과 같이 "Show parameter hints"..