Как использоватьИспользование Statifier с CMake
инструмент как http://statifier.sourceforge.net/ статор для создания библиотеки статический?
Как использоватьИспользование Statifier с CMake
инструмент как http://statifier.sourceforge.net/ статор для создания библиотеки статический?
Вы всегда можете сделать custom_target
для работы с library
или executable
, чтобы делать специальные материалы.
Если вы хотите изменить команду компоновщика в cmake, то самый низкий уровень, о котором я знаю, это перезаписать CMAKE_CXX_LINK_EXECUTABLE
-переменная (для C это CMAKE_C_LINK_EXECUTABLE
), чтобы использовать собственный компоновщик. Если вы это сделаете, обратите внимание на специальные поля <>
в этой переменной. См. here для всех переменных. В приведенном ниже разделе (Правила расширения) показаны специальные «теги», которые можно использовать внутри встроенных переменных cmake.
у меня в главном CMakeLists.txt
:
#-----------------------------------------------------------------
# statifier determine (http://statifier.sourceforge.net/) for linux
#-----------------------------------------------------------------
set(FOOBAR-HAS-STATIFIER false)
if (UNIX)
find_program(STATIFIER_EXE NAMES "statifier")
if (NOT STATIFIER_EXE STREQUAL STATIFIER_EXE-NOTFOUND)
set(FOOBAR-HAS-STATIFIER true)
macro(MAKE_STATIC_EXE _static_exe_out)
foreach (_target ${ARGN})
set(_shared_exe "${CMAKE_CURRENT_BINARY_DIR}/${_target}")
set(_static_exe "${CMAKE_CURRENT_BINARY_DIR}/${_target}-static/${_target}")
add_custom_command(POST_BUILD
OUTPUT ${_static_exe}
COMMAND ${STATIFIER_EXE} --set=LD_BIND_NOW=yes ${_shared_exe} ${_static_exe}
DEPENDS ${_shared_exe}
)
SET(${_static_exe_out} ${${_static_exe_out}} ${_static_exe})
endforeach()
endmacro()
else()
message ("statifier (http://statifier.sourceforge.net/) not found. Can not build setup for unix")
endif()
endif()
, а затем в главном приложении CMakeLists.txt
##
## static foobar
##
if (FOOBAR-HAS-STATIFIER)
make_static_exe(FOOBAR-STATIC-dynstat dynstat)
message("${FOOBAR-STATIC-dynstat}")
endif()
После сборки успешным есть в нарастании реж foobar
и статический foobar-static
исполнимыми.