问题标签 [cmake-language]
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.
macos - 如何检测我的 Cmake 代码在哪个版本的 macOS 上运行?
我需要确定运行 cmake 文件的 MacOS 版本。
cmake - 使用 CMake 添加带有生成的源文件的库
tl;博士;
在 CMake 中使用 ADD_LIBRARY 时,它将检查cmake ..
所有源文件是否存在。我有一些是在编译时生成的。有没有办法强制 CMake 忽略丢失的文件,因为它们会在需要时存在?
完整版本:
我正在尝试使用 CMake 构建 Sqlite3,并且可以编译它,但是,我需要在 CMake 中注释掉几行并运行它,然后取消注释并再次运行它。我想一口气做完所有事情。
我遇到的主要问题是 Sqlite3 使用了一个名为“lemon”的代码生成器。所以要正确构建一切,我需要编译柠檬。然后我需要运行柠檬。一旦柠檬完成运行,就会有一个名为“parse.c”的新文件。“parse.c”需要包含在构建 sqlite3 的源代码中。
我将删除代码以显示适用的位。
所以这里发生了3个步骤:
- 可执行柠檬被创建。
- 柠檬用于创建 parse.c(除其他外)
- parse.c 与大量其他文件一起编译以创建 sqlite3 库。
使用 add_dependencies 这应该可以工作。但事实并非如此。它不起作用的原因是第一次传递时 build/parse.c 不存在。我已经能够通过注释掉 parse.c 来解决它。完成一半建筑后。然后我可以取消注释它,它将成功编译。
我已经研究过使用 ADD_CUSTOM_COMMAND,我相信它会在cmake ..
运行而不是运行时运行柠檬ninja
。但是,当cmake ..
运行时,“柠檬”还不存在,因此自定义命令无法运行。
编辑 1
所以我想出了一个黑客...
因此,当cmake ..
运行时,它将在正确的位置创建一个空文件。但是,必须有更好的方法。帮助表示赞赏。
c++ - 如何将分号(;)附加到cmake字符串
在 cmake 3.19.2 中,我尝试通过以下方式将分号添加到字符串中:
但分号总是被忽略。
以下代码也不起作用:
或者
或者
Cmake 文档说,什么:“将所有参数连接在一起并将结果存储在命名的 <output_variable> 中。”
我做错了什么?
cmake - cmake 中的 .phony 目标替代项以创建自定义目标
假设 Makefile 有一个像这样的虚假目标
我们可以通过给出以下命令从命令行直接运行 Makefile 中的这个 .phony 目标
我想用 CMakeList 做同样的事情。如何告诉 cmake 用我给的名字创建一个虚假目标?
注意:我不想每次运行 make 时都运行这个虚假目标。相反,我想在需要时手动运行它。我知道 add_custom_target() 将生成虚假目标,并且在 add_dependency() 的帮助下,我们可以将虚假目标附加到目标。但是我的要求不一样。我想在需要时手动运行这个虚假目标。
shell - 如何从 shell 脚本调用 cmake 方法?
我有一个参数化函数,mytestprogram.cmake
如下所示:
问题:
如何get_output_from_input
从 shell 脚本调用 cmake 方法?
我了解到有一个-P <source.cmake>
标志,它将 CMake 置于脚本处理模式,我们可以使用它执行任意 CMake 代码,如下所示。
get_output_from_input
所以,在这种情况下,我相信从 shell 脚本调用的方式如下所示?
但上述技巧不起作用。我的跑步方式execute_process
正确吗?
试图找出问题所在,似乎echo $CMAKE_PROGRAM
返回空?这可能是原因吗?我在这里想念什么get_output_from_input
?
环境:
cmake 版本 3.18.2
macOS Catalina
cmake - 包含路径对汇编程序不可见
cmake 版本:3.18.5 MinGW Makefiles 主机:windows 目标:ppc 编译器:windriver
我有一个程序集文件 file.s,其中包含一个标头 header.h(.include "header.h")。我已将标头的路径添加到 target_include_directories()。但汇编器无法找到指定的头文件。如何将包含目录传递给汇编程序?
cmake - 如何覆盖/附加 CMAKE_C_CFLAG
cmake 版本:3.18.5 MinGW Makefiles 主机:windows 目标:ppc 编译器:windriver
我想创建两个具有不同标志的不同可执行文件。例如,我想创建一个带有标志(-tPPCE)的可执行文件和另一个带有标志(-tPPCEV)的可执行文件,这些标志定义了硬件的类型。如果我尝试在他们各自的 CMakelists.txt 中设置这个值
它不工作。
仅当我在设置了所有其他标志的工具链文件中设置此值时,它才有效。
cmake - 如何在make期间只编译一组目标
我正在使用 cmake 作为构建生成器。版本:3.18.5 我的项目中有 5 个目标。我只想编译特定的目标集,这取决于我在 make 期间给出的选项。这个怎么做?
例如,如果我运行
我希望目标 app1、app3、app5 应该被编译。如果我跑
我想要目标 app2,app4 应该被编译。
我在cmakelist.txt里面尝试了上面的东西,
但我没有得到预期的结果。
cmake - 无法生成 Mingw Makfile
cmake 版本:3.18.5 我使用的是 cmake-gui,它运行顺利。现在我已经切换到命令行。它工作了几天,突然从没有我得到以下错误的地方。
我正在运行的 cmake 命令,
我得到的错误是,
cmake - 我可以控制 CMake 中 target_sources 的源排除吗?
我是 CMake 的新手,我想知道是否有可能target_sources()
根据变量排除某些来源。
假设我在下面有这个
我想根据名为 ie 的标志从 myDir3 中排除/包含源/目录myFlag
。我怎样才能做到这一点?