Cmake 添加新项目到解决方案
Cmake Add new project to solution
我是 cmake 的新手,所以如果问这个低级问题但在 google 上找不到答案,请原谅。
我正在尝试在 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 的空项目,然后我可以 运行 我的第一个食人魔 helloword 但它生成了一个仅包含 ALL_BUILD 和 ZERO_CHECK 的 .sln 文件。
我如何创建一个干净的项目,它具有所有配置并准备好使用 ogre 类(我的意思是它会自动配置 link、包含等)?
CMake 术语与 Visual Studio 的术语略有不同。
特别是,属于该 CMake 项目的每个 CMake project
will create a Visual Studio solution (.sln
file), while all of the 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 中,,但始终使用库文件的完整路径。
我是 cmake 的新手,所以如果问这个低级问题但在 google 上找不到答案,请原谅。
我正在尝试在 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 的空项目,然后我可以 运行 我的第一个食人魔 helloword 但它生成了一个仅包含 ALL_BUILD 和 ZERO_CHECK 的 .sln 文件。 我如何创建一个干净的项目,它具有所有配置并准备好使用 ogre 类(我的意思是它会自动配置 link、包含等)?
CMake 术语与 Visual Studio 的术语略有不同。
特别是,属于该 CMake 项目的每个 CMake project
will create a Visual Studio solution (.sln
file), while all of the 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 中,