在CMake中有没有一种方法可以通过检查目标属性来找到二进制目标的完整名称(mybin.exe)?get_target_property(EXENAME targetname OUTPUT_NAME)
(或运行时间输出名称)
或者,我必须使用自定义命令,如How to get library full-native name on cmake?中的命令
使用get_target_property,我似乎只能从它得到“逻辑”的目标名称(mybin),而没有其他信息。
谢谢你
在CMake中有没有一种方法可以通过检查目标属性来找到二进制目标的完整名称(mybin.exe)?get_target_property(EXENAME targetname OUTPUT_NAME)
(或运行时间输出名称)
或者,我必须使用自定义命令,如How to get library full-native name on cmake?中的命令
使用get_target_property,我似乎只能从它得到“逻辑”的目标名称(mybin),而没有其他信息。
谢谢你
2条答案
按热度按时间ev7lccsx1#
如果没有生成器表达式,这是不可能的,这是有原因的:有多个配置生成器,如Visual Studio生成器,它们在一次CMake配置运行(
cmake -S ... -B ...
)中为多个构建配置(发布、调试...)创建一个构建系统。甚至默认情况下,在名称与构建的配置匹配的目录中创建二进制文件。根据您要对信息执行的操作,有以下几种替代方法:
add_custom_command
,add_custom_target
,add_test
或类似内容的一部分。多个目标属性也允许使用生成器表达式。install()
command。CMakeLists.txt
中设定theCMAKE_RUNTIME_OUTPUT_DIRECTORY
variable。请注意,除非变数值包含产生器运算式,否则这仍会导致为多组态产生器建立组态相依子目录。(您可以简单地添加$<0:>
,但这很容易导致不同配置的二进制文件相互覆盖。)如果你不能在顶层
CMakeLists.txt
中通过命令行或cmake presets来指定它,你仍然可以使用一个相对于CMAKE_BINARY_DIR
的路径;这将使二进制文件易于定位。3pvhb19x2#
最后那是一个做的问题:
因此exename.txt包含可执行文件目标的完整路径没有找到类似以下操作的方法:
不管怎样...