目前,我相信我需要从Cmake的命令行(构建后)中获取目标输出的位置。
或者,也许我需要编写CMake脚本,以允许进程在目标上运行(构建之后)。
我们的基本流程将是:
我想使它更容易从命令行的某个位置完成。
目前,我们正计划在构建内容中使用python前端(由于它是具有多个处理器的异构SoC,由于需要多个编译器,因此我们无法进行单一配置),因此在外面没什么大不了的。
我希望能够做类似的事情:
cmake <configuration stuff>
build.py <target>
debug.py <target>
profile.py <target>
开发人员不必知道目标二进制文件的确切位置。 (仅供参考,这些事情比仅调用gdb或其他命令要复杂得多,因此它们确实需要脚本来通过第三方工具从命令行实现它)
这容易实现吗?还是我需要在Cmake中编写脚本,以便在配置过程中将所需信息输出到文件,然后在事后查询该文件?
非常感谢任何指导或帮助我实现目标。
编辑:在我的质询中要更加尖锐:
使用cmake配置后。有什么办法可以从构建目录中再次运行cmake来查询高速缓存/构建系统/任何内容,从而找出目标输出在哪里。
例如:
./source
/modules
/module1
/submodule1
/test1
/submodule2
/test1
/module2
/test1
/module3
/test1
我进入构建目录,执行cmake -S .. -B . <etc>
我现在有一棵树,里面装满了makefile和其他内容。
如果我确实制作了该树,则该树将填充有可大致反映源树的构建工件(至少以我的经验如此)</ p>
如果我做make help
,它将按名称输出一堆目标。
module1
submodule1
submodule1_test1
submodule2
submodule2_test1
等
现在,我想知道submodule1_test1的可执行文件在哪里,而不必知道其父级是module1。此时,我可以运行cmake并查询缓存/构建系统以获取该命名目标的位置吗?
如果不能,我可以通过在配置时形成“数据库”来自己进行管理。这不是一个问题。我只是希望cmake保留这些信息以便以后在其缓存中查询。
答案 0 :(得分:2)
当您第一次使用CMake生成项目时,它会创建一个CMakeCache.txt文件,其中包含所有变量来缓存项目中的变量。您可以使用Python对其进行解析,然后找到 project_name_BINARY_DIR 变量。那将是您的构建目标根。从那时起,如果它们都具有标准命名模式(例如FooTests.exe),则可以使用Python递归检查测试可执行文件的子目录。
或者,如果您使用set cache命令,它也应该添加到CMakeCache.txt中。