Я разрабатываю систему Cray, которая требует передачи '-dynami c' до того, как будут найдены библиотеки Dynami c. В моем случае я пытаюсь связать с libtiff. Команда cc main.cpp -ltiff
завершается ошибкой, если файл не найден, но cc main.cpp -dynamic -ltiff
работает. Я считаю, что поведение этого файла, не найденного, вызывает CMake find_package
.
Когда я использую CMake (версия 3.5.2) и передаю -DCMAKE_EXE_LINKER_FLAGS:STRING="-dynamic"
из командной строки, find_package(TIFF)
работает. Но когда я устанавливаю его в CMakeLists.txt следующим образом:
set(CMAKE_EXE_LINKER_FLAGS "-dynamic")
find_package(TIFF REQUIRED)
, он не может найти libtiff. Но если я попробую:
set(CMAKE_EXE_LINKER_FLAGS "-dynamic" CACHE STRING "" FORCE)
find_package(TIFF REQUIRED)
, он не удастся в первый раз, но поместит «-dynami c» в кеш, а затем будет работать при втором запуске. Если я вручную установил TIFF_LIBRARY_RELEASE
для указания на .so, тогда find_package
также будет работать (заполнив остальные переменные).
Каков правильный способ сделать это, не передавая его как параметр?