[Clang] C++ 빌드 시 undefined reference error 해결 방법
·
개발/C, C++
제가 WSL을 여러 번 설치하고 CMake로 빌드하면서 겪었던 상황과 문제에 대해서 공유해 보도록 하겠습니다. WSL, CMake 빌드 시 undefined reference error 해결 방법 1. 필수 standard lib 설치 및 지정 필요 아래와 같은 기본적인 명령어를 알지 못한다면 기본적으로 clang 설치 후 build-essential, libc++-10-dev 와 같은 라이브러리들을 설치하지 않아서 발생한 문제일 경우가 있습니다. undefined reference to `operator new undefined reference to `std::cout' 이 경우 clang version에 따라 아래와 같이 설치를 할 필요가 있습니다. sudo apt install libstdc++-..
[CMake] Ch3. CMake 설치와 프로젝트 생성 (CMake, GCC, VS Code)
·
개발/CMake
지금까지 기본 빌드 시스템에 대한 이해와 CMake에 대해서 간단히 알아보았습니다. 이제 본격적으로 실습을 해보도록 하겠습니다. 실습을 하기 위해서는 환경을 먼저 세팅해야겠죠? 여기서는 CMake를 설치하고 빌드해 볼 수 있는 여러 가지 환경을 알려드리도록 하겠습니다. 선택은 본인의 몫이지만, 가이드를 모든 환경에 맞추어서 하긴 어려워서 윈도에서 VS Code를 활용하여 진행하도록 하고 추후에 Visual studio 2022, VS Code + WSL 환경 활용한 환경을 가이드해 보도록 하겠습니다. 필요하신 분만 추가로 다른 글을 참고하여 진행하시면 될 것 같습니다. CMake 설치 윈도우에 CMake를 설치합니다. 공식 사이트 (https://cmake.org/download/)로 접속하여 cmake..
[개발 환경] CMake 프로젝트에 Googletest 추가하기
·
개발/개발 환경
Googletest를 사용하기 위해 여러 가지 방법이 있을 수 있다. 나는 VS Code로 셋업 한 CMake 프로젝트에 CMake 명령어를 통해 Googletest를 추가하는 것을 해보겠다. CMake 프로젝트에 Googletest 추가하기 Googletest를 CMake 프로젝트로 가져오기 테스트 작성 후 빌드하기 실행하기 Googletest를 CMake 프로젝트로 가져오기 Googletest를 CMake 프로젝트에서 빌드되게 만드는 것은 크게 2가지가 있을 수 있다. 첫 번째는 적당한 최신 버전을 다운로드해서 프로젝트 디렉터리에 포함한 뒤 함께 CMake로 빌드하고 추가하는 방법이 있다. 두 번째는 Fetch Content 기능을 통해 Goggletest의 repository로부터 당겨와서 빌드하는..
[개발 환경] CMake 프로젝트 구성하기 - 다양한 변수들
·
개발/개발 환경
CMake 프로젝트 구성하기 - 다양한 변수들 CMake는 다양한 변수들을 제공한다. 프로젝트를 구성할 때 해당 변수들을 잘 활용해서 명령어와 스크립트를 구성하면 효율적이고 유지보수에 좋은 프로젝트를 구성할 수 있다.수많은 명령어 중에서 자주 사용될 만한 것을 선정해 보았고 실제로 출력해 보면서 어떤 용도로 사용할지 생각해 보았다. 여러 카테고리로 나누어져 있고, 그 카테고리에 맞게 분류해서 정리해 본다. https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html cmake-variables(7) — CMake 3.25.2 Documentation This page documents variables that are provided by CMak..
[개발 환경] CMake 프로젝트 구성하기 - 프로젝트 관련 명령어들
·
개발/개발 환경
CMake 프로젝트 구성하기 - 프로젝트 관련 명령어들 이 전 포스팅에서 스크립트 관련 명령어들을 알아보았다. 이번에는 프로젝트를 구성할 때 필요한 명령어들을 알아보겠다. 스크립트 명령어가 기본적이고 베이스가 되는 명령어라면, 프로젝트 명령어를 통해서 실제 라이브러리나 프로그램을 만든다고 할 수 있겠다. 또 의존성이나 캡슐화를 프로젝트 구조적인 측면에서부터 할 수 있는 장점이있다. Project Commands add_compile_definitions 소스를 컴파일할 때 preprocessor 에 추가되는 define을 추가하는 명령어이다. 이렇게 추가를 하면 COMPILE_DEFINITIONS 라는 변수에 추가가 되고 이를 get_property를 통해 읽을 수 있다. add_compile_defin..
[개발 환경] CMake 프로젝트 구성하기 - 스크립트 관련 명령어들
·
개발/개발 환경
CMake 프로젝트 구성하기 - 스크립트 관련 명령어들 CMake에는 수많은 명령어(함수)들이 존재한다. 이 전 포스팅에서 프로젝트를 구성하기 위한 간단한 필수적이고 자주 사용되는 명령어들을 알아보았는데 이번에는 추가적인 명령어들이 어떤 게 있는지 공부해 보고 좀 더 풍성하게 CMake를 활용해 보는 게 목적이다. 첫 번째로 스크립트 관련 명령어들을 알아본다. Scripting Commands cmake_path cmake_path는 3.20에 새로 추가되었다. 대표적으로 GET, SET, APPEND 와 같은 옵션을 활용해서 path를 설정할 수 있다. 아래 여러가지 예제를 실험해 보았다. set(path2 "home/growing-dev/a.cpp") cmake_path(GET path2 FILENA..
[개발 환경] CMake 최신 버전 설치하기
·
개발/개발 환경
CMake 최신 버전 설치하기 CMake를 WSL에서 사용하면, Ubuntu 20.04에서 3.16 버전을, 18.04에서는 3.10을 기본적으로 설치할 수 있다. 하지만 최신 버전에서만 지원하는 명령어들을 실행할 수 없다. 따라서 최신 버전을 설치하고, CMakeList.txt의 cmake_minimum_required(VERSION 3.xx) 를 맞춰주는 게 좋다. 그래서 CMake 최신 버전을 설치하기 위한 방법을 소개한다. 다운로드 방법은 크게 2가지이다. 공식 사이트에서 다운로드 하기 wget으로 github에서 다운로드하기 이후 압축 해제 후 빌드 및 설치는 동일하다. 공식 사이트에서 다운로드하기 https://cmake.org/download/ Download | CMake Current d..
[개발 환경] CMake 기본 설정 따라하기 (feat. VS Code)
·
개발/개발 환경
이전 포스팅들에서 기본적인 VS Code 설치 및 설정과 CMake 기본 개념에 대해서 알아보았다. 2023.01.20 - [분류 전체보기] - [개발 환경] Visual Studio Code 에 대해서 [개발 환경] Visual Studio Code 에 대해서 오늘은 가장 핫한 텍스트 에디터 툴이자 무한 확장가능한 Visual Studio Code (VS Code) 에 대해서 알아본다. https://code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined growing-dev101.tistory.com 2023.01.18 - [개발] - [개발 환경] Ma..
[개발 환경] Make는 이제 그만. CMake 에 대해서 알아보자
·
개발/개발 환경
CMake(Cross Platform Make)는 멀티플랫폼으로 사용할 수 있는 Make의 빌드관리시스템을 만들기 위한 오픈소스 프로젝트이다. 즉 기존의 Make 방식을 보완하는 오픈소스 프로젝트로서 조금 더 사용자 친화적으로 빌드시스템을 구축할 수 있는 것이 특징이다. https://cmake.org/ CMake “…CMake, CTest, and CDash have proven to be invaluable tools for us to build multiplatform code, track changes, run tests, and improve code quality by performing code coverage and memory leak analysis.” cmake.org 기능 소프트웨어..