gpt4 book ai didi

c++ - Cmake 添加新项目到解决方案

转载 作者:行者123 更新时间:2023-11-30 03:28:55 26 4
gpt4 key购买 nike

我是 cmake 的新手,所以如果问这个低级问题但无法在谷歌上找到答案,请原谅。

我正在尝试在 Ogre3d SDK 之上创建一个空项目。我用 cmake 和 vs2015 构建了一个 ogre3d 源,现在我想在 ogre 库和头文件之上创建我的项目。如前所述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 的空项目,然后我可以运行我的第一个 ogre helloword 但它生成一个仅包含 ALL_BUILD 和 ZERO_CHECK 的 .sln 文件。我如何创建一个干净的项目,它具有所有配置并准备好使用 ogre 类(我的意思是它自动配置链接、包含等)?

最佳答案

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

特别是,每个 CMake project将创建一个 Visual Studio 解决方案(.sln 文件),而所有 CMake targets属于该 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 中,we prefer to not use the library directory for telling the build system of the library's location ,而是始终使用库文件的完整路径。

关于c++ - Cmake 添加新项目到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com