В моем наборе приложений я собираю Libtiff из исходного кода и затем связываю его с приложением, которое я пишу сам.Файлы CMakeLists.txt от Libtiff указывают, что статические библиотеки помещаются в расположение библиотеки CMAKE_INSTALL_FULL_LIBDIR, определяемое опцией CMake GNUInstallDirs.
Когда я впервые собрал и протестировал свое приложение, я сделал это в Debian, и на этой платформе устанавливается CMAKE_INSTALL_FULL_LIBDIRв $ {CMAKE_INSTALL_PREFIX} / lib.Ну и хорошо, поэтому в файле моего собственного приложения CMakeLists.txt я сказал ему искать там статические библиотеки tiff.Нет проблем ...
Теперь я собрал тот же набор сборки для платформы Red Hat Linux (Pengwin Enterprise для WSL), и оказалось, что здесь CMAKE_INSTALL_FULL_LIBDIR получает значение $ {CMAKE_INSTALL_PREFIX} / lib 64 .Я проверил документацию CMake , и кажется, что на самом деле выбор 'lib' или 'lib64' определяется автоматически и зависит от платформы.
Итак, в моемфайл CMakeLists.txt собственного приложения, есть ли способ узнать, что это на моей текущей платформе?Как еще я должен угадать, где искать библиотеку?Я оглянулся, но не могу найти стандартную переменную CMAKE, которая содержит зависящую от платформы строку, поэтому я могу думать только о следующем:
- Попробуйте 'lib', и если этоне работает попробуйте 'lib64', или
- Создайте новый CMAKE_INSTALL_FULL_LIBDIR в моем собственном файле CMakeLists.txt и прочитайте его конец
... но оба они кажутся неуклюжимии, конечно, должен быть лучший способ.