- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 add_custom_command在构建期间生成文件。该命令似乎从未运行过,所以我制作了这个测试文件。
cmake_minimum_required( VERSION 2.6 )
add_custom_command(
OUTPUT hello.txt
COMMAND touch hello.txt
DEPENDS hello.txt
)
我尝试运行:
cmake .
make
并且 hello.txt 没有生成。我做错了什么?
最佳答案
当您只有一个正在构建的目标时,add_custom_target(run ALL ...
) 解决方案适用于简单情况,但当您有多个顶级目标(例如应用程序和测试)时,该解决方案就会崩溃.
当我尝试将一些测试数据文件打包到目标文件中时,我遇到了同样的问题,这样我的单元测试就不会依赖于任何外部内容。我使用 add_custom_command
解决了这个问题,并使用 set_property
进行了一些额外的依赖魔术。
add_custom_command(
OUTPUT testData.cpp
COMMAND reswrap
ARGS testData.src > testData.cpp
DEPENDS testData.src
)
set_property(SOURCE unit-tests.cpp APPEND PROPERTY OBJECT_DEPENDS testData.cpp)
add_executable(app main.cpp)
add_executable(tests unit-tests.cpp)
所以现在 testData.cpp 将在编译 unit-tests.cpp 之前生成,并且任何时候 testData.src 发生变化。如果您调用的命令非常慢,您会得到额外的好处,即当您仅构建应用程序目标时,您不必等待该命令(只有测试可执行文件需要)完成。
上面没有显示,但仔细应用 ${PROJECT_BINARY_DIR}、${PROJECT_SOURCE_DIR} 和 include_directories()
将使源树中没有生成的文件。
关于CMake add_custom_command 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2937128/
我遇到的问题是 add_custom_command 总是过时的,因此在每次构建时都会运行。自定义命令运行作为同一项目目标的工具来生成另一个目标使用的文件: add_executable(Genera
我有一个关于 CMake 的问题,这似乎在这里很常见,但似乎没有一个答案能解决我的问题。 在 details子目录,有一个CMakeLists.txt其中包含: add_custom_command(
我在为add_custom_command苦苦挣扎。让我详细解释这个问题。 我有这些cxx文件和hxx文件集。我对它们每个运行一个perl脚本,以生成某种类型的翻译文件。该命令看起来像 perl tr
也许这是不可能的,我误读了 cmake 3.2 documentation ,但我虽然创建一个自定义命令会在 Makefile 中创建一个自定义“目标”,以便我可以通过调用输出文件的名称来构建目标。
我正在尝试使用 add_custom_command在构建期间生成文件。该命令似乎从未运行过,所以我制作了这个测试文件。 cmake_minimum_required( VERSION 2.6 ) a
查看最新状态更新 初始条件 代码生成器以一组输入文件作为参数生成一组c++源代码 输入文件可能包括其他输入文件 已经解决了获取输出文件列表,解析输入codegen文件以获得完整的codegen输入列表
我正在尝试运行 gperf来自 cmake文件。 我创建了一个非常小的 CMakeLists.txt以下。 当我运行它时 $ cmake . $ make 它不会创建 example.hpp文件 以下
我目前正在尝试使用两个可执行文件设置一个 CMake 项目,其中一个是用于为另一个生成代码的简单实用程序。 CMakeLists.txt 的相关位: add_executable(lua2c lua2
使用 Cmake v3.8,我需要我的自定义命令仅在生成新构建的 .hex、.map 和 .elf 文件后运行。但是,在生成所有 *.hex、*.map 和 *.elf 文件后,该命令并未真正运行。这
我有一个包含许多子项目的 CMake 项目。 他们每个人都可以使用我提供的函数来生成一个包含某些信息的小文本文件(通过调用 add_custom_command)。 在最后一步,我想将所有这些文件合并
对于我的项目,我想运行一个命令来生成一个已安装的文件(换句话说,生成的文件只是一个数据文件,而不是源代码)。 我目前在我的 CMakeLists.txt 中有以下内容 add_custom_comma
我有一个工具可以生成一些 cpp 和头文件,并想用 ADD_CUSTOM_COMMAND 添加它在构建期间自动执行它并将文件添加到项目中。问题是(大部分)输出文件的名称事先不知道。我如何添加这些文件?
我想要一个 Cmake 函数来将一些二进制文件复制到特定位置。为此,我有以下函数定义: function ( collect_binaries TARGET_NAME DEST_DIR ) se
出于多种原因,我必须通过自定义命令手动生成静态库。 但是,似乎自定义命令仅在目标明确请求其输出文件时才执行。 如果我尝试将生成的静态库与 target_link_libraries 链接起来, CMa
我需要过滤某个目录下的 *.h 和 *.cpp 文件,然后使用一些脚本对其进行格式化,因此我编写了以下代码: add_custom_command( DEPENDS ${GENERATED_S
我有一些 protobuf 文件,它们位于我的 cmake 项目之外的目录中(它们位于 旁边 ${CMAKE_SOURCE_DIR} 的根目录中,我们的主要 CMakeLists .txt 文件是)。
我正在尝试向我的 添加一些自定义构建命令vc2010 项目使用 ADD_CUSTOM_COMMAND .但: [1] 我只是发现 CMAKE 会自动插入比我预期的多得多的代码。 例如,我希望命令完全是
我正在尝试将 cmake 生成的所有二进制文件复制到特定目录。我不想使用 EXECUTABLE_OUTPUT_PATH,将它们保留在构建树中使开发更容易。 所以我使用 add_custom_comma
我想创建一个自定义命令,使用 Apple 的 libtool 将所有静态库合并到一个胖静态库中。构建期间的命令。我正在使用 Xcode 生成器和 CMake 3.19.1。我的脚本是这样的: set(
我遇到了自定义目标(使用 add_custom_target 创建)的 add_custom_command 问题。 我的总体想法是将静态代码分析工具合并到 cmake 工具链中。我的解决方案基于此处
我是一名优秀的程序员,十分优秀!