Cmake将新项目添加到解决方案中

时间:2017-09-13 11:02:37

标签: c++ visual-c++ cmake ogre

我是cmake的全新新手,请原谅我这个问题但在谷歌找不到答案。

我试图在Ogre3d sdk上创建一个空项目。 我使用cmake和vs2015构建了ogre3d源代码,现在我想在ogre libs和header之上创建我的项目。所以解释here 我创建一个cmakelists.txt文件并将这些行添加到它:

# specify which version you need
find_package(OGRE 1.10 REQUIRED)

project(OG1)

# the search paths
include_directories(${OGRE_INCLUDE_DIRS})
link_directories(${OGRE_LIBRARY_DIRS})

 # copy essential config files next to our binary where OGRE autodiscovers them
 file(COPY ${OGRE_CONFIG_DIR}/plugins.cfg ${OGRE_CONFIG_DIR}/resources.cfg 
  DESTINATION ${CMAKE_BINARY_DIR})

创建cmake文件并使用cmake-gui 生成.sln一切都还可以,但是我希望cmake创建一个名为OG1的空项目然后我可以运行我的第一个食人魔helloword但它会生成一个.sln文件只包含ALL_BUILD和ZERO_CHECK。 我如何创建一个具有所有配置的干净项目,并且已经准备好使用ogre类(我的意思是它自动配置链接,包括等)。

1 个答案:

答案 0 :(得分:2)

CMake术语与Visual Studio略有不同。

特别是,每个CMake project将创建一个Visual Studio解决方案(.sln文件),而属于该CMake项目的所有CMake targets将作为Visual Studio项目出现在相应的解决方案。

CMake       Visual Studio

project <-> Solution (.sln)
Target  <-> Project (.vcxproj)

所以你的项目显然没有目标。在您的情况下,您可能需要一个可执行目标,使用add_executable添加。可执行文件可以与项目具有相同的名称。请注意,CMake中的可执行文件不能完全为空。虽然Visual Studio中存在空可执行项目的概念,但它在其他构建系统中无效,因此CMake也不能支持它。所以你需要在这里指定至少一个源文件:

add_executable(og1 og1.cpp)

有了这个,您还可以将剩余的构建选项附加到目标。这一步是可选的,因为你的代码也可以在这里工作,但在现代CMake中被认为是好的风格:

target_include_directories(og1 PUBLIC ${OGRE_INCLUDE_DIRS})
target_link_libraries(og1 PUBLIC ${OGRE_LIBRARIES})

请注意,在CMake中we prefer to not use the library directory for telling the build system of the library's location,但始终使用库文件的完整路径。