【发布时间】:2017-12-30 13:37:04
【问题描述】:
我最近在我的项目中开始使用 cmake,并设法使用 CMAKE 包含 SDL。
现在我添加了一个简单的类文件,它包含在我的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;
}
平铺.cpp
class Tile {
// ...
}
如何使 Tile.cpp 在我的 xcode 项目中可见?
编辑 这在任何时候都不会影响现实世界。我只是懒得将我的 *.cpp 类拆分为 *.h 和 *.cpp 文件。所以我只包含了 *.cpp 文件——即使它不是正确的方式——这只是为了测试目的
我试图在 cmake 中将它设置为另一个源文件,但它不起作用,因为它包含在我的“main.cpp”中,这会导致链接器错误
【问题讨论】:
-
通常包含的文件具有
.h扩展名(header 文件),而不是.cpp(source 文件)。make Tile.cpp visible in my xcode project是什么意思?为了使程序可编译,您需要指定包含目录,该目录包含包含的文件。 -
您将
.cpp文件包含在另一个.cpp文件中的原因是什么?这是非常不标准的。 -
这是cmake内部的一个问题,因为cmake对待头文件和源文件的方式不同,它通过扩展名来推断文件是头文件还是源文件。
-
@Oliv - 谢谢。这有很大帮助。我也尝试将其拆分为 hpp 和 cpp 也可以正常工作