cmake - 在项目

时间:2017-12-30 13:37:05

标签: c++ xcode cmake

我最近在我的项目中开始使用cmake,并设法使用CMAKE包含SDL。

现在我添加了一个简单的类文件,该文件包含在我的main.cpp

再次配置/生成项目后,我的源文件看起来像这样:

enter image description here

我的设置

的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?

修改 这在任何时候都不会影响现实世界。我只是懒得将* .cpp类拆分为* .h和* .cpp文件。所以我只是包含* .cpp文件 - 即使它不是正确的方法 - 这仅用于测试目的

我试图将它设置为cmake中的另一个源文件,这不起作用,因为它包含在我的&#34; main.cpp&#34;这会产生链接器错误

1 个答案:

答案 0 :(得分:1)

通常在目标的来源中包含该文件:

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

告诉CMake将其视为头文件:

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

这将阻止CMake为其生成编译规则。