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
Cmake:从命令行获取目标的位置_Cmake - Fatal编程技术网

Cmake:从命令行获取目标的位置

Cmake:从命令行获取目标的位置,cmake,Cmake,目前,我认为我需要从Cmake的命令行(在构建之后)获取目标输出的位置 或者,我可能需要编写CMake脚本,以允许进程在目标上运行(在构建之后) 我们的基本流程是: 代码 建造 调试 建造 侧面图 建造 等等 我想在命令行中的一个位置更容易地完成这项工作 目前,我们正计划在我们的构建工作中使用python前端(因为它是一个具有多个处理器的异构SoC,由于需要多个编译器,我们无法进行单一配置),所以在外部编写一些脚本并不是什么大问题 我希望能够做到以下几点: cmake <configu

目前,我认为我需要从Cmake的命令行(在构建之后)获取目标输出的位置

或者,我可能需要编写CMake脚本,以允许进程在目标上运行(在构建之后)

我们的基本流程是:

  • 代码
  • 建造
  • 调试
  • 建造
  • 侧面图
  • 建造
  • 等等
  • 我想在命令行中的一个位置更容易地完成这项工作

    目前,我们正计划在我们的构建工作中使用python前端(因为它是一个具有多个处理器的异构SoC,由于需要多个编译器,我们无法进行单一配置),所以在外部编写一些脚本并不是什么大问题

    我希望能够做到以下几点:

      cmake <configuration stuff> 
      build.py <target>
      debug.py <target>
      profile.py <target>
    
    我进入我的构建目录,执行
    cmake-S-B

    我现在有了一棵树,里面装满了makefile和其他东西

    如果我真的做了,那棵树就会被大致反映源树的构建构件填充(至少在我的经验中是这样的)

    如果我做了
    makehelp
    ,它会按名称输出一组目标

    module1
    submodule1
    submodule1_test1
    submodule2
    submodule2_test1
    
    等等

    现在,我想知道submodule1_test1的可执行文件在哪里,而不必知道它的父级是module1。此时,我是否可以运行cmake并查询cache/buildsystem以获取该命名目标的位置


    如果我不能,我可以通过在配置时形成一个“数据库”来管理它。这不是问题。我只是希望cmake保留这些信息,以便以后在缓存中查询

    当您第一次使用CMake生成项目时,它会创建一个CMakeCache.txt文件,其中包含项目中的所有变量缓存变量。您可以使用Python来解析它,并找到project\u name\u BINARY\u DIR变量。这将是您的构建目标根。从那时起,您可以使用Python递归地检查测试可执行文件的子目录,如果它们都有标准的命名模式,如FooTests.exe


    或者,如果您使用该命令,它也应该被添加到CMakeCache.txt中。

    这很容易实现吗?
    我是否需要在Cmake中编写一些脚本,以便在配置期间将所需信息输出到文件中
    您可以
    事后查询该文件?
    您也可以这样做。您可以只执行添加自定义命令(command echo$)
    。你试过什么?它起作用了吗?你做了什么研究?但是可执行文件被放在
    CMAKE\u RUNTIME\u OUTPUT\u目录中
    ,所以问题是你要在
    CMAKE
    中决定它的去向。@KamilCuk好的,也许有一个更有针对性的问题:配置和构建完成后,我可以做什么来做
    cmake MyTarget
    并让它回显到stdout的路径?我不知道add_custom_command()如何在这方面帮助我。
    cmake
    用于配置东西。
    MyTarget
    的位置根据您放入的内容而变化。关键是您可以控制
    MyTarget
    可执行文件的位置。如果在
    CMakeLists.txt
    所在的目录中执行
    cmake.
    ,则
    MyTarget
    将位于该目录中。我不明白。当您运行
    cmake
    时,您可以决定您想要的
    MyTarget
    位置。例如,如果希望
    MyTarget
    位于
    /tmp/bin
    中,则只需
    cmake-DCMAKE\u RUNTIME\u OUTPUT\u目录=/tmp/bin.
    即可配置项目。如果未设置
    运行时\u输出\u目录
    ,则仅使用CMakeCache的目录我知道cmake用于配置内容。我只是想知道是否可以在配置完成后查询配置,以获取在构建系统之外使用的详细信息。看看我的编辑有什么进展。添加自定义目标(路径-${mytarget}命令echo$
    module1
    submodule1
    submodule1_test1
    submodule2
    submodule2_test1