CMake: не использовать /usr/lib64/libXmu.so - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в CMake и Geant4.Я пытаюсь построить проект, используя их.Также я работаю в удаленном кластере.Когда я cmake, ошибки нет.Но когда я make получаю ошибку,

make[2]: *** No rule to make target '/usr/lib64/libXmu.so', needed by 'PRO_simulation'.  Stop.
make[1]: *** [CMakeFiles/PRO_simulation.dir/all] Error 2
make: *** [all] Error 2

однако

ls -rt /usr/lib64/libXmu*

дает:

lrwxrwxrwx. 1 root root     15 Jan 11  2016 /usr/lib64/libXmu.so.6 -> libXmu.so.6.2.0
-rwxr-xr-x. 1 root root 109552 Nov 20  2015 /usr/lib64/libXmu.so.6.2.0
lrwxrwxrwx. 1 root root     16 Jan 11  2016 /usr/lib64/libXmuu.so.1 -> libXmuu.so.1.0.0
-rwxr-xr-x. 1 root root  19440 Nov 20  2015 /usr/lib64/libXmuu.so.1.0.0

, так как это удаленный кластерЯ не могу создать ссылку с именем "libXmu.so" (после запроса полномочий кластера все еще бесполезно), но я могу сделать ссылку на свой локальный каталог.

Теперь мой вопрос: что мне делать?сделать в cmake так, что он будет искать libXmu.so в моем локальном каталоге вместо /usr/lib64/libXmu.so

1 Ответ

0 голосов
/ 05 марта 2019

Прежде всего, это взлом и ни в коем случае не правильное решение, но вы можете напрямую связать файл .so: Ссылка .so файла на файл .cpp с помощью компиляции g ++

  1. Откройте CMakeLists.txt и удалите все ссылки на ссылки libXmu в target_link_libraries для всех целей.
  2. Добавьте /home/user/path/to/libXmu.so в cmake CXX или флаги ссылок.Дополнительную информацию о том, как это сделать, можно найти в: Как добавить компоновщик или флаг компиляции в файл CMake? или: Задать параметры CFLAGS и CXXFLAGS с помощью CMake

Я бы порекомендовал вам сначала попробовать что-то вроде:

export CFLAGS=/home/user/path/to/libXmu.so
export CXXFLAGS=/home/user/path/to/libXmu.so

Перед запуском cmake.Если это не удается, откройте CMakeLists.txt и попробуйте найти, где определены дополнительные CFLAGS и CXXFLAGS, и добавьте путь к libXmu.so

Еще одна вещь, которую вы можете сделать, - вы можете запустить make VERBOSE=1, которая покажет вам точную введенную команду gcc / g ++, скопируйте ее в текстовом редакторе и замените -lxmu на /home/user/path/to/libXmu.so

Я надеюсь, что хотя бы одна из этих работ.

...