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
Build cmake项目只生成一个特定的可执行文件(及其依赖项)_Build_Cmake_Build Target - Fatal编程技术网

Build cmake项目只生成一个特定的可执行文件(及其依赖项)

Build cmake项目只生成一个特定的可执行文件(及其依赖项),build,cmake,build-target,Build,Cmake,Build Target,我有一个CMake项目,其结构大致如下: . |-- library1 | |-- CMakeLists.txt |-- library2 | |-- CMakeLists.txt |-- executables | |-- CMakeLists.txt 在可执行文件中我生成了两个可执行文件。我想知道是否可能只生成一个可执行文件及其依赖项而不是全部。我听说了一些关于cmake--target选项的信息,但我无法让它与cmake/3.13.4一起使用,这里有几个潜在的问题。首先,典型

我有一个CMake项目,其结构大致如下:

.
|-- library1
|   |-- CMakeLists.txt
|-- library2
|   |-- CMakeLists.txt
|-- executables
|   |-- CMakeLists.txt

可执行文件中
我生成了两个可执行文件。我想知道是否可能只生成一个可执行文件及其依赖项而不是全部。我听说了一些关于cmake
--target
选项的信息,但我无法让它与
cmake/3.13.4

一起使用,这里有几个潜在的问题。首先,典型的CMake工作流将
build
文件夹作为顶级CMake文件的同级文件夹。因此,您的文件层次结构应该如下所示:

.
|-- CMakeLists.txt
|-- library1
|   |-- CMakeLists.txt
|-- library2
|   |-- CMakeLists.txt
|-- executables
|   |-- CMakeLists.txt
|-- build    <------------ Run CMake commands from here.
build
目录。您必须确保将
--build
标志指向
build
文件夹,这次不是顶级CMake文件。此外,此命令中要指定的目标名称应与
add_executable()
而不是项目名称或其他任何内容中使用的目标名称匹配

  • 与往常一样,当尝试运行CMake时出现错误/问题时,清除缓存(删除
    build/CMakeCache.txt
    ),或者干脆删除
    build
    文件夹,然后重新开始


  • 明确地说,您是否只想构建(即编译)一个可执行文件?还是只想(在CMake时间)配置/生成一个可执行文件?@kamil我在stackoverflow上读到了,但我丢失了链接。我尝试了
    cmake--build--target target_name
    但我收到了错误消息
    CMake error:源目录“/build/target_name”不存在。
    @squareskittles我想编译可执行文件,但只编译一个我命名的可执行文件及其相关库。您的命令行在语法上看起来正确,但您的构建文件夹实际命名为
    build
    ?CMake是否为名为
    target\u name
    的目标生成?如何配置CMake?
    --build
    应该指向配置cmake的文件夹。
    cmake --build . --target MyExecutable1