CMake:不要使用/usr/lib64/libXmu.so

时间:2019-03-04 13:05:46

标签: cmake geant4

我是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 :(得分:0)

首先,这是一个黑客,绝不是一个适当的解决方案,但是您可以直接链接到.so文件:Link .so file to .cpp file via g++ compiling

  1. 打开CMakeLists.txt,并删除target_link_libraries中所有目标对libXmu链接的所有引用。
  2. /home/user/path/to/libXmu.so添加到cmake CXX或链接标志。有关如何执行此操作的更多信息,请参见:How do I add a linker or compile flag in a CMake file?或:Set CFLAGS and CXXFLAGS options using CMake

我建议您首先尝试以下操作:

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

运行cmake之前。如果失败,请打开CMakeLists.txt并尝试查找定义了额外的CFLAGSCXXFLAGS的位置,然后将路径添加到libXmu.so

您可以做的另一件事是可以运行make VERBOSE=1,它将向您显示确切的gcc / g ++命令,将其复制到文本编辑器中,然后将-lxmu替换为/home/user/path/to/libXmu.so

我希望其中至少有一部作品。