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