C++ CMAKE在生成文件中创建附加目录
我当前的项目结构如下所示:C++ CMAKE在生成文件中创建附加目录,c++,cmake,C++,Cmake,我当前的项目结构如下所示: Project --src/ --CMakeLists.txt --Graph.cpp --Graph.hpp --main.cpp --build/ --CMakeLists.txt cmake_minimum_required(VERSION 3.18) project(GRAPHTHEORY VERSION 1.0.0) set (
Project
--src/
--CMakeLists.txt
--Graph.cpp
--Graph.hpp
--main.cpp
--build/
--CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
project(GRAPHTHEORY VERSION 1.0.0)
set (CMAKE_CXX_STANDARD 17)
add_subdirectory(src)
add_library(Graph Graph.hpp Graph.cpp)
add_executable(graph_theory main.cpp)
target_link_libraries(graph_theory PRIVATE Graph )
项目文件夹中的CMakeLists.txt
如下所示:
Project
--src/
--CMakeLists.txt
--Graph.cpp
--Graph.hpp
--main.cpp
--build/
--CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
project(GRAPHTHEORY VERSION 1.0.0)
set (CMAKE_CXX_STANDARD 17)
add_subdirectory(src)
add_library(Graph Graph.hpp Graph.cpp)
add_executable(graph_theory main.cpp)
target_link_libraries(graph_theory PRIVATE Graph )
src文件中的CMakeLists.txt如下所示:
Project
--src/
--CMakeLists.txt
--Graph.cpp
--Graph.hpp
--main.cpp
--build/
--CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
project(GRAPHTHEORY VERSION 1.0.0)
set (CMAKE_CXX_STANDARD 17)
add_subdirectory(src)
add_library(Graph Graph.hpp Graph.cpp)
add_executable(graph_theory main.cpp)
target_link_libraries(graph_theory PRIVATE Graph )
当我进入build/
目录,运行cmake..
,然后运行make
,可执行的graph\u theory
位于build
中的一个新的src/
目录中
我不知道为什么要在我的“build/”目录中创建一个新的src/
目录
编辑:
所以我想做的是复制运行
cmake-src/-B build/
来自项目目录
当我执行上述操作,然后将
cd
放入build/
并运行make
时,可执行文件将在build/
目录中创建。build artifacts和cache保存在一个目录中,该目录反映了您使用add\u subdirectory
命令在CMake中添加的子目录
但是,您可以通过更改运行时\u输出\u目录的默认值
来更改最终目标的结束位置。例如,此代码将把它放在bin
目录中:
set_target_properties(graph_theory
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/"
)
构建工件和缓存保存在一个目录中,该目录反映了您使用
add_subdirectory
命令在CMake中添加的子目录
但是,您可以通过更改运行时\u输出\u目录的默认值
来更改最终目标的结束位置。例如,此代码将把它放在bin
目录中:
set_target_properties(graph_theory
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/"
)
它保存与src目录中的源文件相关的生成文件?@user253751是否有办法使可执行文件直接显示在生成目录中?我的意思是,我所描述的是预期行为?它保存与src目录中的源文件相关的生成文件?@user253751是否有一种方法可以使可执行文件直接显示在生成目录中?我的意思是,我所描述的是预期行为?非常感谢!我添加了一些额外的信息,以及我当初这么做的原因。非常感谢!我添加了一些额外的信息,以及我当初这么做的原因。