CMake:不使用 /usr/lib64/libXmu.so
CMake: Not to use /usr/lib64/libXmu.so
我是 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"做link(请求集群权限后,还是没用),但是我可以做link到我的本地目录。
现在我的问题是我应该在 cmake 中做什么,它会在我的本地目录中查找 libXmu.so
而不是 /usr/lib64/libXmu.so
首先,这是一个 hack,绝不是一个合适的解决方案,但您可以 link 直接到 .so
文件:Link .so file to .cpp file via g++ compiling
- 打开 CMakeLists.txt 并删除所有目标在
target_link_libraries
中对 libXmu linking 的所有引用。
- 将
/home/user/path/to/libXmu.so
添加到 cmake CXX 或 link 标志。有关如何执行此操作的更多信息,请参见:How do I add a linker or compile flag in a CMake file? or: 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 并尝试找到定义额外 CFLAGS
和 CXXFLAGS
的位置,并将路径添加到 libXmu.so
您可以做的另一件事是您可以 运行 make VERBOSE=1
,这将向您显示发出的确切 gcc/g++ 命令,将其复制到文本编辑器中并替换 -lxmu
和 /home/user/path/to/libXmu.so
我希望至少有一个作品。
我是 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"做link(请求集群权限后,还是没用),但是我可以做link到我的本地目录。
现在我的问题是我应该在 cmake 中做什么,它会在我的本地目录中查找 libXmu.so
而不是 /usr/lib64/libXmu.so
首先,这是一个 hack,绝不是一个合适的解决方案,但您可以 link 直接到 .so
文件:Link .so file to .cpp file via g++ compiling
- 打开 CMakeLists.txt 并删除所有目标在
target_link_libraries
中对 libXmu linking 的所有引用。 - 将
/home/user/path/to/libXmu.so
添加到 cmake CXX 或 link 标志。有关如何执行此操作的更多信息,请参见:How do I add a linker or compile flag in a CMake file? or: 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 并尝试找到定义额外 CFLAGS
和 CXXFLAGS
的位置,并将路径添加到 libXmu.so
您可以做的另一件事是您可以 运行 make VERBOSE=1
,这将向您显示发出的确切 gcc/g++ 命令,将其复制到文本编辑器中并替换 -lxmu
和 /home/user/path/to/libXmu.so
我希望至少有一个作品。