使用 CMAKE 编译具有不同标志的同一文件

发布于 2024-12-11 06:34:36 字数 257 浏览 0 评论 0原文

我想将相同的 .cpp 源文件编译为两个不同的目标可执行文件,并且我正在使用 cmake。一个将有一些检测代码,而另一个则没有。这样我就可以比较仪器的开销。

我用 #ifdefs 分隔了检测代码,因此我想使用 -D 标志定义一个值。我认为这是可能的

add_definitions(-DINSTRUMENT)

,但看起来这适用于在该目录中创建的所有可执行文件。我想知道是否有一个好方法来仅为特定的可执行目标设置定义。

I want to compile the same .cpp source file into two different target executables and I am using cmake. One will have some instrumentation code and the other won't. That way I can compare the overhead of instrumentation.

I have the instrumentation code separated with #ifdefs so I want to define a value using the -D flag. I see that is possible with

add_definitions(-DINSTRUMENT)

But it looks like this then applies to all the executables created in that directory. I'm wondering if there is a good way to set the definition only for a specific executable target.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑶笙 2024-12-18 06:34:36

您可以设置目标之一的 COMPILE_DEFINITIONS 属性具有特定于目标的定义:

set_target_properties (instrumented_target PROPERTIES COMPILE_DEFINITIONS "INSTRUMENT")

更新:

从 CMake 2.8.11 开始,您还可以使用 target_compile_definitions 出于相同目的。

You can set the COMPILE_DEFINITIONS property of one of the targets to have target-specific definitions:

set_target_properties (instrumented_target PROPERTIES COMPILE_DEFINITIONS "INSTRUMENT")

Update:

Starting from CMake 2.8.11 you can also use target_compile_definitions for the same purpose.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文