【发布时间】:2014-01-30 23:20:45
【问题描述】:
编辑:如果你想查看代码,这里是: https://github.com/WalterCapa/PercolationCpp/tree/master
我正在制作一个使用 allegro5 库生成动画的程序。 因为我想避免在每台使用该程序的计算机上安装库,所以我尝试将标题和 .so 文件粘贴到我的项目目录中。所以树是这样的:
根
include
allegro5 <- (Dir where the headers of allegro are)
Percolation.h
QuickUnion.h
lib
allegro5 <-(Dir where the .so files are)
Percolation.cpp
QuickUnion.cpp
PercolationVisualizer <- (Dir that has the main)
问题是这样的。我用 LinuxMint 13 在我的电脑中安装 allegro5。如果我从 Code::Blocks 编译或者如果我从终端使用 -I 调用 hedaers 和 -L 来告诉哪里编译,一切都很好.so 文件是,即使使用 cmake 也可以正常工作,但是当我尝试在另一台计算机上执行此操作时,即使它是像我的笔记本电脑这样的 Windows 或带有 linuxmint 的虚拟机,它也会生成此错误:
make[2]: *** No rule to make target '/./lib/allegro5/liballegro.so/', needed by'
../bin/PercolationVisualizer'. Stop.
make[1]: *** [CMakeFiles/PercolationVisualizer.dir/all] Error 2
make: *** [all] Error 2
这是我的 CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.7)
project(PercolationCpp)
set(PercolationCpp_VERSION_MAJOR 0)
set(PercolationCpp_VERSION_MINOR 1)
set(EXECUTABLE_OUTPUT_PATH ../bin/)
set(percolation_SRCS PercolationVisualizer/PercolationVisualizer.cpp lib/Percolation.cpp lib/QuickUnion.cpp)
#Executable
add_executable(PercolationVisualizer ${percolation_SRCS})
#include Allegro
include_directories(./include)
link_directories(./lib/allegro5)
#connect all the libraries
set(allegro5_LIBS /./lib/allegro5/liballegro.so /./lib/allegro5/liballegro_primitives.so)
target_link_libraries(PercolationVisualizer ${allegro5_LIBS})
顺便说一句,在使用 MinGW 的 Windows 上尝试时,我使用了 cmake -G "MinGW Makefiles" .. 和 mingw32-make。 它发现编译器和 cmake 可以工作,但是当我尝试第二个时,它给了我同样的错误。在我的桌面上,我正在使用 g++ 进行编译。
【问题讨论】: