2017-12-30 62 views
1

최근에 내 프로젝트에서 cmake로 시작하여 CMAKE를 사용하여 SDL을 포함 시켰습니다.cmake - 프로젝트에 다른 클래스 파일 표시

enter image description here

내 설치

:

는 지금은 main.cpp

다시/구성 프로젝트를 생성 한 후 내 소스 파일이처럼 보이는 내에 포함 된 간단한 클래스 파일을 추가

CMakeLists.txt

cmake_minimum_required (VERSION 3.3.2) 
project (2dgameengine) 

set(MAIN_FILE 
    src/main.cpp 
) 

add_executable(2dgameengine 
    ${MAIN_FILE} 
) 

target_sources(2dgameengine PUBLIC ${EXTRA_FILE}) 


set (SDL2_INCLUDE_DIR libs/sdl2/include) 
set (SDL2_SOURCE_DIR libs/sdl2/src) 
include_directories(${SDL2_INCLUDE_DIR} ${SDL2_INCLUDE_DIR}) 
target_link_libraries(2dgameengine ${SDL2_LIBRARY}) 

MAIN.CPP

#include <iostream> 
#include <SDL.h> 


#include "Tile.cpp" 

int main() { 

return 0; 
} 

Tile.cpp

class Tile { 
    // ... 
} 

어떻게 내 Xcode 프로젝트에 Tile.cpp 표시 할 수 있습니까?

편집하는 것은 이 언제든지 현실 세계를 칠 것 아무것도 없다. 난 * .h 및 * .cpp 파일에 내 * .cpp 클래스를 분할하는 것을 게으른 것이 었습니다. 따라서 * .cpp 파일을 포함 시켰습니다. 올바른 방법이 아니더라도 테스트 목적으로 만 사용됩니다.

cmake에 다른 소스 파일로 설정하려고했는데,이 파일이 내 의도에 포함되어 있기 때문에 작동하지 않습니다. 링커 오류가 있습니다 "MAIN.CPP는"

+0

일반적으로 포함 된 파일에는'.c' 파일이 아닌'.h' 확장자 (* header * 파일)가 있습니다. '제 xcode 프로젝트에서 Tile.cpp를 볼 수있게 만드십시오 '라는 것은 무엇을 의미합니까? 프로그램을 컴파일 가능하게 만들려면 포함 된 파일이 들어있는 include 디렉토리를 지정해야합니다. – Tsyvarev

+2

'.cpp' 파일을 다른'.cpp' 파일에 포함시키는 이유는 무엇입니까? 그것은 극히 비표준입니다. – Angew

+1

이것은 cmake가 헤더 파일과 소스 파일을 다르게 취급하기 때문에 cmake 내부의 문제입니다. 파일이 헤더 나 확장자를 사용하는 소스 인 경우에 유추됩니다. – Oliv

답변

1

은 일반적으로 대상의 소스에서 파일 포함 :

add_executable(2dgameengine 
    ${MAIN_FILE} 
    src/Tile.cpp 
) 

및 헤더 파일로 처리하는 CMake 알려주기 :

set_property(SOURCE src/Tile.cpp PROPERTY HEADER_FILE_ONLY TRUE) 

이것은 CMake가 컴파일 규칙을 생성하지 못하도록합니다.

+0

덕분에. * .h 파일을 프로젝트 구조에 표시 할 수 있습니까? 편집하고 싶다면 항상 cmake를 실행 한 후에 프로젝트에 다시 포함해야합니다. – xhallix

+0

@xhallix 물론 그렇습니다. 목표에 나열하십시오. 헤더 전용으로 설정할 필요조차 없으며 CMake는 확장을 기반으로 인식합니다. 실제로, IDE에서 나타나는 것은 컴파일 된 것뿐만 아니라 모든 대상의 구성 파일을 나열하는 것이 CMake의 연습을 장려하는 이유입니다. – Angew

+1

@xhallix 사이드 노트 : 왜 'MAIN_FILE' 변수인가? 파일을 직접 나열 할 수 있습니다. – Angew