【发布时间】:2020-06-18 14:13:27
【问题描述】:
我想在我的链接器蹦床 python 脚本中操作链接器调用,但在我的一生中,我无法让 CMake 尊重 CMAKE_CXX_CREATE_SHARED_LIBRARY 值。它总是使用CMAKE_CXX_COMPILER 进行链接。如果我切换到add_executable 并改用CMAKE_CXX_LINK_EXECUTABLE,则效果很好。有没有办法说服 CMake 尊重CMAKE_CXX_CREATE_SHARED_LIBRARY 的设置?
一个简单的 CMakeLists.txt
cmake_minimum_required( VERSION 3.12 )
project( mylib )
include( CMakePrintSystemInformation )
add_library( mylib SHARED mylib.cpp )
工具链摘录
我已经在工具链文件和 -C 预缓存选项中尝试过。
set( CMAKE_LINKER "/path/to/linker_trampoline.py" )
set( CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_LINKER> --CMAKE_CXX_COMPILER <CMAKE_CXX_COMPILER> --CMAKE_SHARED_LIBRARY_CXX_FLAGS <CMAKE_SHARED_LIBRARY_CXX_FLAGS> --LANGUAGE_COMPILE_FLAGS <LANGUAGE_COMPILE_FLAGS> --LINK_FLAGS <LINK_FLAGS> --CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> --SONAME_FLAG <SONAME_FLAG> --TARGET_SONAME <TARGET_SONAME> --TARGET <TARGET> --OBJECTS <OBJECTS> --LINK_LIBRARIES <LINK_LIBRARIES>" CACHE STRING "" FORCE )
【问题讨论】: