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

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

具体来说,这适用于LuaJIT,它要求使用以下选项链接应用程序:

-pagezero_size 10000 -image_base 100000000

我宁愿不仅仅设置CMAKE_EXE_LINKER_FLAGS,因为我正在构建的项目中可能还有其他不连接到LuaJIT的exe,并且更希望通过传递设置来完成此项。

另外,我不能仅将其添加到IMPORTED_LINK_INTERFACE_LIBRARIES中,因为这些标志会用于链接到此依赖项的其他库,并且该设置仅适用于链接应用程序。

额外赠品:这仅适用于64位mac osx构建。

点赞
用户8328098
用户8328098

你可以使用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()
2018-07-17 03:00:45