如何通过导入的目标传递设置"CMAKE_EXE_LINKER_FLAGS"?

How to transitively set "CMAKE_EXE_LINKER_FLAGS" via an imported target?

本文关键字:CMAKE EXE LINKER FLAGS 设置 导入 何通过 目标      更新时间:2023-10-16

我正在为一个库实现FindXXX.cmake,它需要与之链接的exe来添加特定的链接器标志。

具体来说,这是针对LuaJIT的,它要求使用链接应用程序

-pagezero_size 10000 -image_base 100000000

我宁愿不只是设置CMAKE_EXE_LINKER_FLAGS,因为可能还有其他EXE没有链接到我在项目中构建的LuaJIT,我更希望这来自一个可传递的设置。

此外,我不能只将其添加到IMPORTED_LINK_INTERFACE_LIBRARIES中,因为这些标志会在针对该依赖项进行链接的其他库上使用,并且该设置特定于链接应用程序。

额外信用:这应该只适用于64位macosx版本。

您可以使用target_link_libraries(your_target your_flags)。您的标志必须以-开头。您可以使用APPLE变量检查Apple系统,也可以使用CMAKE_SIZEOF_VOID_P检查64位系统。

你可以把所有这些放在一个if语句中,就像这样:

if(APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 8)
target_link_libraries(your_target your_flags)
endif()