【问题标题】:CMake: Not to use /usr/lib64/libXmu.soCMake:不使用 /usr/lib64/libXmu.so
【发布时间】:2019-03-04 13:05:46
【问题描述】:

我是 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

【问题讨论】:

  • 如果你这样做会有帮助吗LD_LIBRARY_PATH=/home/local:$LD_LIBRARY_PATH cmake ..`
  • 不,这没有帮助。抱歉,我现在编辑了问题。当我做cmake 时,没有问题。之后我执行make 时会发生错误。有一个名为build.make 的文件有一行/usr/lib64/linXmu.so。这就是为什么make 正在查看该特定路径的原因。

标签: cmake geant4


【解决方案1】:

首先,这是一个 hack,绝不是正确的解决方案,但您可以直接链接到 .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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 2011-07-31
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多