2017-12-30 44 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が見えることができますか?

EDIT これは、任意の時点で、現実の世界にヒットするものではありません。 * .hと* .cppファイルで* .cppクラスを分割するのは怠惰でした。だから私はちょうど正しい方法でない場合でも、* .cppファイルをインクルードしました。これはテスト目的のみです

私はcmakeの別のソースファイルとして設定しようとしましたが、それは私のリンカエラーを与える「main.cppには、」

+0

通常はインクルードされたファイルに '.c'(* source *ファイル)ではなく' .h'拡張子(* header *ファイル)があります。 '私のxcodeプロジェクトに' Tile.cppを表示する 'とはどういう意味ですか?プログラムをコンパイル可能にするには、インクルードディレクトリを指定する必要があります。インクルードディレクトリには、インクルードされたファイルが含まれています。 – 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

関連する問題