问题标签 [cmake-custom-command]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmake - 如何在 CMake 的 add_custom_command 中添加多个注释?
这个问题只是出于好奇,因为我注意到只打印了最后一个评论块。
控制台上仅打印“注释 B”。出于这个原因,我最终将多个命令拆分为多个 add_custom_command 块。关于如何打印所有评论的任何想法?
使用 CMake v3.5.2
cmake - 在 cmake 中,我怎样才能始终执行一个进程?(或从 add_custom_command 捕获标准输出)
我在我的 cmake 项目中使用生成的文件。我有一个从某些输入生成源代码的脚本,如果给定不同的命令行参数,相同的脚本也可以验证输入,如下所示:
generate_code.py --generate
generate_code.py --validate
如果输入无效,该--validate
模式将打印错误stdout
,我希望这些错误可见。我当前的设置是--validate
在 inexecute_process
和 with --generate
in 中运行add_custom_command
。这有效,但不会--validate
在输入更改时从模式打印用户友好的错误消息,因为execute_process
不会再次运行。
显示这些错误的最佳方法是什么?如果我可以强制execute_process
始终运行,那将起作用,或者如果我可以捕获stdout
失败--generate
并显示出来,我可以修改--generate
选项以打印友好的错误消息,然后显示它们。我怎样才能做到其中一项或两项?
c++ - 我可以在我的 cmake 代码中手动使用 CMake 的 cpp 文件依赖扫描器吗?
我正在尝试使用 CMake 添加一个自定义目标,该目标为每个给定的 .cpp 文件执行一个命令。仅当源文件本身或包含的源文件之一发生更改时,才应重新执行该命令。AFAIK 要实现这一点,我需要一个所有包含文件的列表,并将它们添加到属于我的自定义目标DEPENDS
的调用选项中。add_custom_command()
那么有没有一种内置的方法来获取包含文件的列表?
我知道IMPLICIT_DEPENDS
该函数的选项,add_custom_command()
但它仅适用于 Makefile 生成器。我想让这项工作适用于所有发电机。
感谢您的时间
编辑:
根据要求,我将发布一些 cmake 代码来展示我想要实现的目标。我想添加一个自定义目标,它在所有给定的 .cpp 文件上运行 clang-tidy。增量构建自定义目标时,只要更改 .cpp 文件或其直接或间接包含的头文件之一,就应该重新运行 clang-tidy 命令。就像处理编译器的重新运行一样。
问题在于,它似乎不起作用。当我更改包含的文件时,不会为受影响的文件重新运行 clang-tidy。我在这个例子中使用了“Unix Makefile”生成器,所以它至少应该与 make 一起工作。任何提示为什么它没有?
我希望通过在 cmake 时以某种方式获取文件依赖项,然后将它们添加到 ''''DEPENDS'''' 列表中,我可以为所有生成器实现所需的行为。但是依赖扫描必须在每次运行命令时进行,所以不能在cmake时进行。这意味着扫描必须由当前不是的 cmake 实现。
有类似问题的人: https ://gitlab.kitware.com/cmake/cmake/issues/16830
编辑 2: 我认为 IMPLICIT_DEPENDS 选项不起作用的问题是因为我没有使用正确的文件名。我在代码中更改了它,但我还没有测试它是否在项目中工作。
cmake - CMake add_custom_command 与 target_link_libraries
由于多种原因,我必须通过自定义命令手动生成静态库。
但是,似乎只有在目标明确请求其输出文件时才执行自定义命令。
如果我尝试将生成的静态库与 链接target_link_libraries
,CMake 会抱怨它找不到生成它的规则。
add_custom_command
我想我必须以某种方式在调用和调用之间插入一个目标或依赖项target_link_libraries
,但我不明白如何正确地这样做。
cmake - CMake:如何添加仅针对一种配置执行的自定义命令?
我想添加一个 cmake 自定义命令,该命令仅在使用 Visual Studio 多配置生成器时在调试配置中构建自定义目标时执行。有没有一种干净的方法可以做到这一点?
为了实现这一点,我首先尝试将整个命令列表包装在这样的生成器表达式中。
但这在执行命令时给了我一个语法错误。经过反复试验,我得到了以下 hacky 解决方案。这将命令列表的每个单词包装在像这样的生成器表达式中。
这将在编译 Debug 配置时执行该cmake -E echo foo
命令,并echo " " " " " "
为所有其他配置执行 dummy 命令。
这很丑陋,必须根据主机系统更改虚拟命令。在 Linux 上可能是":" ":" ":" ":"
. 那么有没有更清洁的方法来做到这一点?
感谢您的时间!
cmake - 运行测试后的 add_custom_command (CMakeLists)
我正在使用 CMakeLists.txt 文件来生成(除其他外)一些测试。因此我有类似的东西
ENABLE_TESTING()
ADD_TEST(NAME my_name COMMAND my_command)
我想在测试运行后添加一些命令。我发现 ADD_CUSTOM_COMMAND 似乎完全符合我的需要,但不幸的是它不起作用。这是我尝试过的
看来我没有使用正确的目标。你能帮我告诉我应该做什么吗?
提前谢谢了,
cmake - 如何参数化 cmake add_custom_command 和 add_custom_target?
我正在为微控制器创建一个库,作为其源代码的一部分,将有几个使用示例。
示例的所有 CMakeList.txt 文件看起来都非常相似:
只有示例的名称 (esp_main) 和生成的二进制文件的创建位置发生了变化。
在这种情况下,我希望以某种方式参数化 add_custom_command 和 add_custom_target 。理想情况下包括一些文件并让它定义 esp_main_flash 目标和自定义命令。
cmake - 如何在 CMake 中运行基本的“add_custom_command”
我只是想启动并运行一个可以运行一些基本命令行命令的基本 CMake 示例。我已经研究了一段时间,但我没有任何运气。我完全用错了吗?任何和所有输入将不胜感激。
编辑:使用:
正如其他帖子中所建议的那样,也不起作用。
visual-studio - cmake:add_custom_command:为什么要添加“setlocal ...”?
我使用 cmake 生成 VS 2017 解决方案。我使用“add_custom_command”添加构建后事件。
问题是它在我的命令代码周围添加了一些引号,这使我的脚本失败!
你知道为什么吗 ?以及如何摆脱它?
这是我的命令:
这是我在 VS 中找到的内容:
问题是 cmake 在 "-OUT..." 周围添加引号,我该如何删除它们?
任何想法 ?
谢谢
windows - 使用 cmake 或 cpack 编辑 .bat
我使用 cmake 和 cpack 为我的软件制作了安装程序。在 cpack 安装程序中,用户选择安装软件的位置。比方说C:\Users\MySoftware
我的所有文件.exe
和一个python
文件都使用cmake
. 使用cpack
,它添加C:\Users\MySoftware
到我的环境变量中。然后我所有的 .exe 都可以从窗口使用cmd
。
我有一个它以某种顺序.bat
运行多个选项等......在它的中间,它运行一个python脚本。.exe
我在使用 cmake 或 cpack 时尝试修改 C:\HardPath
我的问题是,根据用户选择安装软件的位置,我找不到使用cmake
or编辑“HardPATH”的方法。cpack
并且因为它是 a.py
而不是.exe
,即使它位于添加到 env 路径的文件夹中,它也不起作用。我尝试使用configure_file
,但它很快就会在配置步骤中执行,因此在用户使用 cpack 安装程序选择“HardPATH”之前。也许可以使用一些东西add_custom_command
?但我不知道如何使用此命令更改 .bat 中的硬路径,或者如果可能的话。
知道如何解决这个“HardPATH”问题吗?
并在 env 变量中添加路径,在调用这个的主 cmakelist 中,我有:
如果我输入echo %PATH%
我会看到我选择在哪里安装我的软件。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9. 0\libnvvp;C:\Python36\Scripts\;C:\Python36\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1。 0\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\CMake\bin;C:\Program Files\Git\cmd;C:\Program Files\Git \m ingw64\bin;C:\Program Files\Git\usr\bin; C:\Users\xxx\Desktop\testCode\bin ;;C:\Users\xxxx\AppData\Local\GitHubDesktop\bin;D:\xxxx\Docker 工具箱
我可以在C:\Users\xxx\Desktop\testCode\bin中调用 .exe,而无需输入完整路径。但不是蟒蛇