Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMAKE在生成文件中创建附加目录_C++_Cmake - Fatal编程技术网

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是否有一种方法可以使可执行文件直接显示在生成目录中?我的意思是,我所描述的是预期行为?非常感谢!我添加了一些额外的信息,以及我当初这么做的原因。非常感谢!我添加了一些额外的信息,以及我当初这么做的原因。