在 cmake 中将目标文件名作为编译定义传递

     2023-02-22     134

关键词:

【中文标题】在 cmake 中将目标文件名作为编译定义传递【英文标题】:Pass target file name as compile definition in cmake 【发布时间】:2014-12-08 15:03:34 【问题描述】:

我有许多目标的 CMakeLists.txt,并且目标定义了特定于配置的后缀。另外我想知道程序中可执行文件的名称。

在 MSVC++ 下我通过定义来做到这一点

add_definitions("-DTARGET_FILE_NAME=\"$(TargetFileName)\"")

但这在其他生成器中不起作用。既然 CMake 有了生成器表达式,有没有一种方法可以与任何生成器一起使用?

我尝试了类似的东西

add_definitions(-DTARGET_FILE_NAME=$<TARGET_FILE_NAME:$<TARGET_PROPERTY:NAME>>)

不过

add_definitions(-DTARGET_FILE_NAME=$<TARGET_PROPERTY:NAME>)

只放置未转义的$&lt;TARGET_PROPERTY:NAME&gt; in the buildfile. I also tried with just$`,但也没有运气。

请注意,compile 构建命令在许多构建文件中不知道 linker 输出的名称,因此似乎没有任何特定于生成器的 hack其中一些也是。

【问题讨论】:

【参考方案1】:

compile_definitions 不支持生成器表达式。使用target_compile_definitions,这样做:

target_compile_definitions(somelib PRIVATE NAME=$<TARGET_FILE_NAME:somelib>)

http://www.cmake.org/cmake/help/v3.1/command/target_compile_definitions.html

【讨论】:

现在,如果我能以某种方式说所有目标都应该得到定义(带有各自的文件名)。有很多。

如何在 Dart 中将 Navigator 函数作为参数传递?

】如何在Dart中将Navigator函数作为参数传递?【英文标题】:HowtopassNavigatorfunctionasaparameterinDart?【发布时间】:2022-01-2116:47:52【问题描述】:我有一个代表按钮的自定义小部件,该小部件位于“lib”文件夹内一个名为“Widgets”的... 查看详情

在 Kotlin Android 中将值传递给函数时进行编译时间检查

】在KotlinAndroid中将值传递给函数时进行编译时间检查【英文标题】:CompiletimecheckwhilepassingvaluestoafunctioninKotlinAndroid【发布时间】:2020-02-1307:45:59【问题描述】:我将JSON文件作为类的输入,并使用gson通过相应的数据类解析值。我... 查看详情

在vb.net中将函数作为参数传递?

】在vb.net中将函数作为参数传递?【英文标题】:Passfunctionasaparameterinvb.net?【发布时间】:2013-10-3004:19:38【问题描述】:我有一个类可以对Excel文件执行许多类似但不同的读/写操作。所有这些操作都在单独的函数中定义。它们都... 查看详情

如何为依赖目标添加 cmake 定义?

】如何为依赖目标添加cmake定义?【英文标题】:Howtoaddcmakedefinitionsforadependencytarget?【发布时间】:2017-01-1616:35:21【问题描述】:我有一个链接到动态库依赖项B的可执行文件A。一切都在正确编译和链接,但现在我想在我的CMakeLis... 查看详情

如果我尝试在不同的公共类中将数组作为参数传递,为啥我的构造函数无法在 Java 中编译?

】如果我尝试在不同的公共类中将数组作为参数传递,为啥我的构造函数无法在Java中编译?【英文标题】:HowcomemyconstructorwillnotcompileinJavaifItryandpassanarrayasanargumentinadifferentpublicclass?如果我尝试在不同的公共类中将数组作为参数... 查看详情

如何在用户定义的函数中将数据库列作为参数传递?

】如何在用户定义的函数中将数据库列作为参数传递?【英文标题】:howtopassadatabasecolumnasaparameterinauserdefinedfunction?【发布时间】:2019-07-0408:49:47【问题描述】:我在sql中有一个用于字符串比较的代码,它接受两个参数作为输入... 查看详情

在 cmake 中编译链接器脚本 - 找不到目标文件(嵌入式项目)

】在cmake中编译链接器脚本-找不到目标文件(嵌入式项目)【英文标题】:Compilelinkerscriptincmake-cannotfindobjectfile(embeddedproject)【发布时间】:2015-04-1814:28:48【问题描述】:我的问题是我想从这个项目的普通makefile做一个cmake文件:h... 查看详情

在 C++ 中将系统日期和时间作为文件名传递

】在C++中将系统日期和时间作为文件名传递【英文标题】:PasssystemdateandtimeasafilenameinC++【发布时间】:2014-04-1415:09:52【问题描述】:我想制作一个考勤系统,它将系统日期和时间作为文件的文件名,例如:平时是这样的intmain()ti... 查看详情

如何在我的自定义 JSP 标记中将整数值作为参数传递?

】如何在我的自定义JSP标记中将整数值作为参数传递?【英文标题】:HowcanIpassanintegervalueasaparameterinmycustomJSPtag?【发布时间】:2016-03-1200:29:05【问题描述】:我有一个在JSP中使用的自制标签库。我的contains-tag有问题。这是一个通... 查看详情

如何在子项目中忽略 CMake 编译器定义

】如何在子项目中忽略CMake编译器定义【英文标题】:HowtoignoreCMakeCompilerDefinitionsinsubprojects【发布时间】:2018-05-0221:07:08【问题描述】:我有一个包含多个第三方库的主项目。我刚刚添加了一个新的第3方项目。我面临的问题是新... 查看详情

在 Django 中将文件路径作为 URL 参数传递

】在Django中将文件路径作为URL参数传递【英文标题】:PassafilepathasaURLparameterinDjango【发布时间】:2020-07-2713:23:26【问题描述】:我正在使用Django创建一个webapp。当用户按下某个按钮时,它需要将文件路径作为参数和字符串参数传... 查看详情

在corda shell中将状态对象作为参数传递

】在cordashell中将状态对象作为参数传递【英文标题】:Passingstateobjectasargumentincordashell【发布时间】:2019-08-2518:34:24【问题描述】:我知道如何在cordashell中传递参数,例如corDapp,但我编写了一个自定义流程,其中流程接受状态... 查看详情

R - 在用户定义的函数 R 中将字符串作为字符串传递

】R-在用户定义的函数R中将字符串作为字符串传递【英文标题】:R-PassingastringasastringinauserdefinedfunctionR【发布时间】:2018-10-2510:55:13【问题描述】:我正在尝试编写一个函数,它对包含某个字符串的数据集进行子集化。模拟数据... 查看详情

如何在类中将函数作为参数传递?

】如何在类中将函数作为参数传递?【英文标题】:Howtopassfunctionsasparameterswithinaclass?【发布时间】:2019-06-0214:19:14【问题描述】:我试图通过我的inordertraversal类将我的print函数作为参数传递,该类属于模板化binarySearchTree。每当... 查看详情

在 C# 中将 lambda 函数作为命名参数传递

】在C#中将lambda函数作为命名参数传递【英文标题】:PassinglambdafunctionsasnamedparametersinC#【发布时间】:2011-12-2414:33:32【问题描述】:编译这个简单的程序:classProgramstaticvoidFoo(Actionbar)bar();staticvoidMain(string[]args)Foo(()=>Console.WriteLi... 查看详情

cmake如何在C ++中将编译器标志附加到末尾

】cmake如何在C++中将编译器标志附加到末尾【英文标题】:cmakehowtoappendcompilerflagstotheendinC++【发布时间】:2018-05-0310:18:32【问题描述】:我想将编译器C++标准设置为gnu++17,但我不能用CMAKE_CXX_STANDARD做到这一点,因为它给我的gnu++1... 查看详情

有没有办法在 C++ 中将匿名数组作为参数传递?

】有没有办法在C++中将匿名数组作为参数传递?【英文标题】:IsthereanywaytopassananonymousarrayasanargumentinC++?【发布时间】:2010-11-1113:20:21【问题描述】:我希望能够在C++中将数组声明为函数参数,如下面的示例代码所示(无法编译... 查看详情

在自定义目标运行后重建依赖目标

】在自定义目标运行后重建依赖目标【英文标题】:Rebuilddependanttargetafteracustomtargetruns【发布时间】:2020-04-1011:51:30【问题描述】:我有一个CMake项目,它使用外部工具为某个平台构建特殊库。运行这个工具使用一个“配置文件... 查看详情