История изменений
Исправление intelfx, (текущая версия) :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
. Можно в нескольких вызовах — в отличие от add_definitions, add_compile_options и т. д., здесь гарантируется, что взаимный порядок флагов и библиотек будет сохранён.
Во-вторых, если ты используешь find_library()
(что, в принципе, стоило бы делать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGET (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя дополнительно делает find_library для проверки вывода pkg-config, и соответственно на который можно влиять установкой FIND_LIBRARY_SUFFIXES
.
Исправление intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
. Можно в нескольких вызовах — в отличие от add_definitions, add_compile_options и т. д., здесь гарантируется, что взаимный порядок флагов и библиотек будет сохранён.
Во-вторых, если ты используешь find_library()
(что, в принципе, стоило бы делать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGET (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя дополнительно делает find_library для проверки вывода pkg-config, и соответственно на который можно влиять установкой FIND_LIBRARY_SUFFIXES.
Исправление intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
. Можно в нескольких вызовах — в отличие от add_definitions сотоварищи, здесь гарантируется, что взаимный порядок флагов будет сохранён.
Во-вторых, если ты используешь find_library()
(что, в принципе, стоило бы делать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGET (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя дополнительно делает find_library для проверки вывода pkg-config, и соответственно на который можно влиять установкой FIND_LIBRARY_SUFFIXES.
Исправление intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
.
Во-вторых, если ты используешь find_library()
(что, в принципе, стоило бы делать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGET (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя дополнительно делает find_library для проверки вывода pkg-config, и соответственно на который можно влиять установкой FIND_LIBRARY_SUFFIXES.
Исправление intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
.
Во-вторых, если ты используешь find_library()
(что, в принципе, стоило бы делать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGET (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя делает find_library и соответственно на него можно влиять установкой FIND_LIBRARY_SUFFIXES.
Исправление intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
.
Во-вторых, если ты используешь find_library()
(которую, в принципе, стоило бы использовать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGET (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя делает find_library и соответственно на него можно влиять установкой FIND_LIBRARY_SUFFIXES.
Исправление intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
.
Во-вторых, если ты используешь find_library()
(которую, в принципе, стоило бы использовать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.
Если у тебя новый CMake (>= 3.6), для взаимодействия с pkg-config рекомендую использовать модуль FindPkgConfig с ключом IMPORTED_TARGETS (pkg_check_modules(FOO IMPORTED_TARGET foo)
), который внутри себя делает find_library и соответственно на него можно влиять установкой FIND_LIBRARY_SUFFIXES.
Исходная версия intelfx, :
Тогда вопрос вырождается в то, что совершенно непонятно, как заставить CMake передать компилятору такое заклинание и не наплодить говногода в CMakeLists.txt (В идеале не отказываясь от target_link_libraries)
Во-первых, target_link_libraries()
принимает в т. ч. произвольные флаги компоновщика. Так что ты вполне можешь сделать target_link_libraries(foo -Wl,-Bstatic a b -Wl,-Bdynamic d)
.
Во-вторых, если ты используешь find_library()
(которую, в принципе, стоило бы использовать в любом случае), можно попросить его искать только статические или только динамические библиотеки, явно задав переменную FIND_LIBRARY_SUFFIXES
.