Работает, как ожидалось, с CMake версии 3.10
Я пробовал ваш пример. Никаких проблем с твоим намерением. Единственное отличие состоит в том, что я пробовал это с более старой версией CMake и поместил объявления переменных непосредственно в файл CMakeLists.txt (должен быть помещен в файл цепочки инструментов).
CMakeLists.txt :
cmake_minimum_required(VERSION 3.10)
project(mylib)
include(CMakePrintSystemInformation)
set (CMAKE_LINKER "/path/to/link.sh")
set (CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_LINKER> <OBJECTS>")
add_library(mylib SHARED mylib.cpp)
Я сократил здесь объявление CMAKE_CXX_CREATE_SHARED_LIBRARY
, потому что я передаю объектные файлы только в следующий скрипт .
ссылка. sh: (Простая печать объектных файлов) :
#!/bin/bash
echo "$@"
Вывод:
$ cmake CMakeLists.txt
$ make
[ 50%] Building CXX object CMakeFiles/mylib.dir/mylib.cpp.o
[100%] Linking CXX shared library libmylib.so
CMakeFiles/mylib.dir/mylib.cpp.o
[100%] Built target mylib
$
ссылка. sh обязательно будет выполнена. Вы игнорируете формальное сообщение о связывании libmylib.so . Библиотека никогда не будет создана (с моей командой компоновщика).
Версия CMake:
$ cmake --version
cmake version 3.10.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$
Я видел, что вы уже создали проблему или, скорее, функцию запрос на сайт проекта CMake .