0

我正在尝试将 xlc 编译器用于 AIX 上的 cpp 代码。我想要我的 C 代码的 cc 编译器

输出:

user@AIX> cmake -DCMAKE_CXX_COMPILER=/usr/vac/bin/xlc ..
-- The C compiler identification is XL 11.1.0
-- The CXX compiler identification is XL 11.1.0
-- Check for working C compiler: /usr/vac/bin/cc
-- Check for working C compiler: /usr/vac/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/vac/bin/xlc
-- Check for working CXX compiler: /usr/vac/bin/xlc -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done

但是当我运行 make (在上面的输出之后),它似乎正在使用 gcc 编译器。

user@AIX> make
[  0%] Building CXX object ../libs/shrxml/CMakeFiles/shrxml.dir/XML.cpp.o
gcc: unrecognized option '-+'
gcc: unrecognized option '-qthreaded'
gcc: unrecognized option '-qhalt=e'
gcc: unrecognized option '-qnamemangling=v6'
gcc: unrecognized option '-qmaxmem=9216'
gcc: unrecognized option '-qnamemangling=v6'
gcc: unrecognized option '-qmaxmem=9216'
gcc: unrecognized option '-qpic'
In file included from /opt/freeware/lib/gcc/powerpc-ibm-
aix6.1.0.0/4.4.5/include/c++/backward/strstream:47,
                 from 
/home/user/workspace/bitbucket/ark/src/libs/shrxml/XML.cpp:105:
/opt/freeware/lib/gcc/powerpc-ibm-
aix6.1.0.0/4.4.5/include/c++/backward/backward_warning.h:28:2: warning: 
#warning This file includes at least one deprecated or antiquated header 
which may be removed without further notice at a future date. Please use a 
non-deprecated interface with equivalent functionality instead. For a 
listing of replacement headers and interfaces, consult the file 
backward_warning.h. To disable this warning use -Wno-deprecated.

我尝试在我的 CMakeLists.txt 文件中添加该集

 set(CMAKE_CXX_COMPILER /usr/vac/bin/xlc CACHE PATH "" FORCE)
 set(CMAKE_CC_COMPILER  /usr/vac/bin/cc  CACHE PATH "" FORCE)

我还导出了环境变量:

user@AIX> echo $CMAKE_CXX_COMPILER
/usr/vac/bin/xlc
user@AIX> 

有什么想法吗?

/usr/vac/bin 目录中没有 cc 或 xlc 的链接。

当我在 shrxlm 目录中 grep 查找 gcc 和 xlc 时,我只能找到 gcc。为什么 cmake 不尊重我对 xlc 编译器的要求?

4

2 回答 2

1

检查cc系统上的符号链接,确保它指向 XL 而不是 gcc。做一个which cc然后ls -l那个。

于 2017-10-04T14:42:48.587 回答
1

根据CMake 常见问题解答“如何使用不同的编译器?” 部分,有3种方法。看起来您已尝试使用所有 3 个,包括Method 3 (set())标记为“避免”的 。

你能再试Method 1: use environment variables一次吗,但是这次列出了那里的环境变量,CC(对于C)和CXX(对于C++)环境变量?

于 2017-10-06T18:44:13.707 回答