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

Cmake Add new project to solution

本文关键字:解决方案 添加 新项目 CMAKE      更新时间:2023-10-16

我在cmake中是全新的,所以请对不起,如果问这个低问题,但找不到Google上的答案。

我正在尝试在Ogre3D SDK顶部创建一个空项目。我用CMAKE和VS2015构建了一个OGRE3D源,现在我想在Ogre Libs和Headers上创建我的项目。因此在这里解释我创建一个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创建一个空的项目,然后我可以运行我的第一个Ogre helloword,但它会生成一个仅包含all_build和Zero_check的.sln文件。我如何创建一个具有所有配置的干净项目,并且准备仅用于使用食人魔类(我的意思是它会自动配置链接,包括等)?

cmake术语与Visual Studio的术语略有不同。

特别是,每个CMAKE project将创建一个Visual Studio解决方案(.sln文件),而该CMake Project的所有CMAKE目标都将在相应的解决方案中以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中,我们不愿使用库目录来告诉库的位置的构建系统,而是始终使用库文件的完整路径。