JetBrain CLion을 처음 써봅니다. CMakeLists.txt에 대해 궁금해요.

lucie의 이미지

Visual Studio 2015 사용하다가, 오랫만에 PyCharm 업데이트 하러 들어가보니
CLion이라는 신기한 IDE가 생겼더라구요. 그래서 그냥 학생 라이센스라서 가벼운 마음으로 받았는데...

Hello world도 못하는 저를 발견할 수 있었습니다 ;;;
그래서 이것 저것 살펴보다가.. 알아챈점이 하나 있었는데요
CMakeLists.txt에 소스파일이 등록되어있지 않으면 컴파일이 안되는것 같더라구요!

그래서 혹시나 CLion 쓰시는 분들이나, VS에는 이런 과정이 왜 없는지(또는 생략되었는지)
궁금해서 질문 드립니다.

CMakeLists.txt

cmake_minimum_required(VERSION 3.4)
project(untitled1)
 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 
set(SOURCE_FILES main.c)
add_executable(untitled1 ${SOURCE_FILES})

위의 set(SOURCE_FILES main.c)가 제가 만든 소스 파일을 추가한 구문이구요
이렇게 굳이 하는 이유는 무엇인지도 궁금합니다.

기초적 질문일 수도 있는데, 답변해 주실 모든 분들께 감사드립니다.

kangic의 이미지

CMake는 빌드 과정(환경)을 보다 사용자 입장에서 편리하게 구성할 수 있도록 해주는 크로스플랫폼 빌드 환경 시스템입니다. 사이트가서 찾아보니 Clion이 크로스플랫폼 IDE다 보니 동일한 환경 구성을 위해서 빌드 시스템으로 CMake를 사용하는 것 같네요.
CMake는 *nix 계열에서는 make를 통해 최종 바이너리(혹은 라이브러리 등등의)를 위한 빌드를 수행할 수 있도록 하는 Makefile을 만들어주도록 도움을 주는 소프트웨어입니다. CMakeLists.txt에 입력된 정보들을 바탕으로 최종적으로 Makefile을 만들어 내는거지요.(Makefile 작성 가이드 manual을 보시면 꽤나 복잡하다는 것을 알 수 있습니다. 그 복잡한 과정을 CMake를 통해 보다 쉽게 설정하는거지요. windows 부분은 잘 모르겠습니다만 사이트의 설명으로는 msvc에서 사용가능하도록 빌드 환경을 구축해 주는 것으로 보이네요..)

질문자 분께서 사용하시는 VS에는 아마도 *.vcproj(버전이 최신이면 *.vxproj?? 써본지 오래되어서 기억이 정확한지 모르겠네요..ㅠㅠ)이라는 파일을 통해서 해당 프로젝트에 포함된 파일들 및 빌드를 위한 정보가 담겨져 있을 것입니다.

설명이 조금 난잡한 것 같네요 ;;
조금이라도 도움이 되셨길 바라며 보다 더 자세한 답변은 더 잘 아시는 다른 분께서...^^;; ㅎㅎ

Have a good day :-)

lucie의 이미지

와.. 엄청 상세한 설명인거같아요! 그러니까 요약하면 *nix 기반으로 작동되기 위해서는 C 소스나 C 프로젝트는 실행하는 명령어가 필요한데,
그걸 작성해놓은 파일이 저 CMakeLists.txt라는거네요! 고맙습니다.

hokim의 이미지

CMakeLists.txt에 있는 디렉토리에서
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..
그러면 build 디렉토리에 VS2015 프로젝트 파일들이 만들어질 것입니다. 거기서부터는 VS2015를 사용할 수 있습니다.
자세히는 모르겠지만 CLion 가 크로스플랫폼 IDE 인것 같아보이네요 제가 명령어모드로 했던 과정을 IDE에서 하는...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.