오픈소스 처음 써보는데 빌드 어떻게 하나요? 헤더도 사라졌어요!

DIO의 이미지

오픈소스 Github로 코드를 받아서 살펴보고 있습니다.
main문이 처음에 안 보여서 쩔쩔메었었는데 그건 CTRL F로 해결하니 괜찮고요,
이제 프로그램이 어떻게 진행되는지를 보고 싶어서 디버깅 버튼을 눌렀는데 이게 웬걸
디버깅 버튼 자체가 없네요.

아마 폴더 불러오기로 열어서 그런가 싶어서 프로젝트를 추가 하기 위해
새로 만들기 - 기존코드의 프로젝트 메뉴를 눌러 C++파일이 많이 보여 C++ 형식 정도만 채택하고
다음 다음 다음을 눌러 만들었습니다....만.

세개의 다른 오픈소스를 보고 있는데 하나같이 만들어진 프로젝트에 헤더를 찾을수가 없다면서
오류를 호소하네요. 이걸 보고 파생된 다른 오픈소스도 많아서 결코 헤더가 빠진건 아닌것 같습니다.
또한 어째서인지 제가 깃헙에서 내려받은 이 세개의 폴더 내에는 프로젝트가 만들어져 있지 않은것 같은데 왜죠?

굳이 만들어진 프로젝트를 빼는 정성을 들이고 업로드 할 것 같지는 않은데 왜 프로젝트(솔루션)이 빠져있을까, 그리고 헤더가 사라졌을까 하는게 궁금합니다. 이게 특정 프로젝트만 그런게 아니라 여럿이 공통적으로 나타나는 문제이니 굳이 링크를 올리지는 않겠습니다.

일단 이 프로젝트의 공통점은 폴더 내부에 cpp가 적어도 두개 이상, assets로 이미지 파일 몇몇은 있는 소형보다는 큰 프로그램이라는것입니다. 처음에는 폴더가 많은 프로그램을 하나의 프로젝트로 때려박으니 누락된 부분이 있나보다 했는데 단일 폴더를 바꿔도 똑같아서 뭔지 모르게 되었습니다.

DIO의 이미지

처음 들어와서 하는 질문이라 익숙치 않아 글이 여러개 올라갔네요 ㅡ..ㅡ 삭제....어떻게 하나요...

익명 사용자의 이미지

흠. 비주얼 스튜디오로 빌드를 시도하신 것 같군요. 맞나요?

세상은 넓고, 프로그램을 만드는 툴은 비주얼 스튜디오 말고도 많습니다.

대부분의 오픈 소스 소프트웨어들은 오픈 소스 빌드 툴체인을 통해서 빌드하도록 구성되어 있습니다.

GNU Toolchain이 대표적인 예입니다: https://en.wikipedia.org/wiki/GNU_toolchain

구체적으로 각 프로젝트를 어떻게 빌드해야 하는지는 프로젝트마다 다르니 프로젝트별 문서를 참조해야 합니다.

====

다만 일부 윈도우즈에서도 쓸 수 있게 개발되는 프로젝트들은 비주얼 스튜디오용 솔루션/프로젝트 파일도 같이 올리기도 하지요.

근데 제 경험상 IDE의 솔루션/프로젝트 관련 파일들은 텍스트 기반 버전 관리와 잘 어울리지 않더군요.

저도 비주얼 스튜디오를 쓸 일이 종종 있는데, git으로 버전 관리할 땐 콘솔 열어서 따로 작업하는 게 훨씬 편한 경우가 많더랍니다.

====

오픈소스 프로젝트에 비주얼 스튜디오용 솔루션/프로젝트 파일이 안 주어졌는데, 어떻게든 비주얼 스튜디오로 빌드하고 싶다면 솔루션/프로젝트 구성을 직접 만드셔야 합니다.

해당 프로젝트의 빌드 과정을 읽고, 이해하고, 비주얼 스튜디오에서 재구성해야 하지요.

그 일이 얼마나 번거로울지는 마찬가지로 프로젝트마다 크게 다를겁니다...만, 대규모 프로젝트라면 당연히 상당히 번거로울 겁니다.

애초에 해당 소스 코드가 비주얼 스튜디오에서 잘 컴파일될 거라는 보장조차 없는 상황이라면, 어지간히 절박하고 필요한 상황이 아니라면 꼭 그런 일을 해야만 하는가 싶네요.

저라면 차라리 리눅스 가상 머신을 올리겠습니다.

익명 사용자의 이미지

으악, 용어를 헷갈렸다.

중간에 GNU Toolchain을 언급한 부분은 GNU build system, 혹은 GNU Autotools으로 정정합니다:
https://en.wikipedia.org/wiki/GNU_Autotools

DIO의 이미지

이게 리눅스 쓰는 수업에서 한번 오픈소스로도 해보라고 던져준거라서.... 어쩌면 리눅스로 열어야 했던것일지도 모르겠네....요? 코드랑 디버깅 때문에라도 비주얼 썼을것 같은데....그러면 비주얼로 디버깅을 하는 생각은 접어야 하려나요

Stephen Kyoungwon Kim@Google의 이미지

해당 소스가 어떤 빌드 시스템을 쓰는지 보시고, 거기에 맞춰서 비주얼 스튜디오 프로젝트를 직접 생성하시면 되기는 합니다. 빌드 시스템이 어떻게 생겼느냐에 따라 쉬울 수도 있고 어려울 수도 있죠. 쉽다면 자동변환을 해주는 툴이 있을 수도 있어요.

그리고 그 오픈소스가 리눅스 라이브러리들을 사용하지 않는다는 확신은 있으신가요?

리눅스에서는 바이너리를 빌드할 때, 디버깅 옵션을 줘야 합니다. 그래서 바이너리가 생성되면, 기본적으로 그것만 갖고 gdb나 dbx, 혹은 그 둘 위에 프론트 엔드를 얹은 툴을 통해서 디버깅할 수 있습니다. gdb나 dbx가 소스 코드의 위치를 파악하지 못할 경우 알려줘야 될 수도 있는데 디버거마다 다르고 구글 검색해 보면 나옵니다.

DIO의 이미지

기존코드 파일에서 프로젝트 만들기 마법사가 있기는 해요.
빌드와 링킹에 관한 지식은 어렴풋이 알고는 있는데 좀 이해가 어렵네요. 더 공부해야겠어요.
음... Readme 파일은 빌드와는 상관없는 말을 하고 있네요.

혹시 헤더가 없는데 그대로 올라온것은 어떻게 생각하시나요?
빌드 이전 폴더를 보는데도 분명이 없는 파일을 include 하고 있는데
이걸 그대로 3년을 쓴걸 보면 아무런 문제 없이 넘어간 느낌이네요.
https://github.com/khodzha/square-dodge 링크는 이거에요

익명 사용자의 이미지

최소한 어떤 헤더가 없다는 건지는 올려줘야 답변자들이 한 번 살펴봐 줄 생각이 들지 않겠습니까?

근데 아마 외부 라이브러리 헤더를 가리킬 가능성이 90%쯤 될겁니다. 애초에 그런 의존성을 파악해서 설정 및 빌드해주는 게 GNU Autotools 같은 툴체인의 역할이에요.

비주얼 스튜디오로 그걸 빌드하려면 당연히 외부 라이브러리까지도 다 가져다가 같이 빌드해야 할 겁니다.

Yi Soo An@Google의 이미지

Required libs for building: SDL1.2, SDL_image 1.2, SDL_ttf 2.0

---------------
Happy Hacking!

xtiinhs의 이미지

"GitHub의 오픈소스"라는 말만 보고 거기 올라와 있는 모든 것들이 지구상의 모든 환경을 고려했을 것이라는 생각은 버리는 게 좋습니다. README 같은 걸 귀찮아서 쓰지 않고 업로드해 둔 것도 찾아 보시면 많을 겁니다. 나중에 질문자분이 이 글을 다시 보고 이불킥하지 않기를 바랍니다.

(덧. 에모지를 댓글에 집어 넣으려고 하니까 오류가 발생하네요)

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.