LINUX.ORG.RU

История изменений

Исправление 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.