我有一个必须为两种不同架构构建的项目。我正在运行一台安装了默认路径的gcc的x86_64 Linux机器,而且我还有第二台PowerPC Linux机器的交叉编译器gcc。
我有一个CMakeLists.txt文件,其中编译器选择取决于传递的变量。
问题在于,当它使用非默认编译器时,它会以某种方式使用默认链接器,显然无法将可执行文件与提供的库链接。
所以,我设置了
set(CMAKE_C_COMPILER ${tools}/bin/powerpc-e500v2-linux-gnuspe-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/powerpc-e500v2-linux-gnuspe-g++)
所以它会使用我的交叉编译器但是控制台中有错误
/usr/bin/ld: skipping incompatible /home/namtarr/Documents/libevent/usr/lib/powerpc-linux-gnuspe/libevent.a when searching for -levent
如果我尝试设置
set(CMAKE_C_LINK_EXECUTABLE ${tools}/bin/powerpc-e500v2-linux-gnuspe-ld)
set(CMAKE_CXX_LINK_EXECUTABLE ${tools}/bin/powerpc-e500v2-linux-gnuspe-ld)
它引发了另一个错误
/home/namtarr/x-tools/powerpc-e500v2-linux-gnuspe/bin/powerpc-e500v2-linux-gnuspe-ld: no input files
那么如何在Cmake中正确设置链接器并将所需的输入文件传递给它,以便我可以使用一个CMakeLists.txt为两个平台构建我的项目?