指示CMake在驾驶链接时使用CXX和CXXFLAGS?

时间:2016-09-14 19:01:30

标签: gcc linker cmake solaris

我们正在使用CMake 3.6.2生成的makefile捕获Solaris上的链接错误。在下面的测试中,我们使用的是GCC,而不是SunCC。从它的外观来看,CMake不一致地应用我们的选项:

典型的编译命令

$.extend( wp.Uploader.prototype, {
    init : function(){
        console.log( 'uploader is initialised' );
        $('.color-field').wpColorPicker(); // not sure exactly when it initialises ?
    },
    success : function(filename){
        console.log( 'uploader has loaded: '+ filename );
        $('.color-field').wpColorPicker(); // or you might want to add the colorbox once a file is actually uploaded?
    },
});

缩位链接命令

[  2%] Building CXX object CMakeFiles/cryptopp-object.dir/cpu.cpp.o
/bin/c++ -fPIC -march=native -m64 -Wa,--divide -o CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o 
-c /export/home/jwalton/cryptopp/cpu.cpp

典型链接错误

/bin/c++ CMakeFiles/cryptest.dir/bench1.cpp.o CMakeFiles/cryptest.dir/bench2.cpp.o
...
CMakeFiles/cryptest.dir/fipstest.cpp.o  -o cryptest.exe  libcryptopp.a -lnsl -lsocket

请注意,该文件是使用ld: fatal: file CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: wrong ELF class: ELFCLASS64 (它是一个支持64位的机器和内核)编译的,但缺少链接调用(Solaris上的默认值为32位)。

尝试搜索 "cmake use CXXFLAGS link" 会产生太多无关紧要的噪音,而且我找不到-march=native -m64选项也没有太多运气。我还希望避免将工作重复到CMakeList.txt,或执行重新格式化选项的工作(LDFLAGS选项CXXFLAGS变为-Wl,-x选项LDFLAGS)。< / p>

如何指示CMake在驾驶链接时同时使用CXX和CXXFLAGS?

我在CMake用户邮件列表上找到Running a different program for the linker,但对我来说感觉不对(问题和上下文略有不同)。它也不起作用。

这是一个小例子:

-x

我还在邮件列表中找到了Setting global link flags。它也不起作用。

PROJECT(foo)

SET(CMAKE_CXX_LINK_EXECUTABLE
    "purify <CMAKE_CXX_COMPILER> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>")
ADD_EXECUTABLE(foo foo.cxx)

0 个答案:

没有答案