【问题标题】:CMake on Cygwin with clang not creating expected dll.aCygwin上的CMake与clang没有创建预期的dll.a
【发布时间】:2016-03-29 20:10:25
【问题描述】:

我正在 Cygwin 上使用该库构建一个共享库和一个应用程序。使用 GCC,CMake 创建一个 .dll.a 以在链接时使用。切换到clang 我明白了

[ 34%] Built target xxx_shared
make[2]: *** No rule to make target 'src/libxxx.dll.a', needed by 'xxx.exe'.  Stop.

这是 clang CMake 扩展中的错误吗?

我正在使用cmake --version 3.3.2

【问题讨论】:

    标签: dll cmake cygwin shared-libraries clang


    【解决方案1】:

    是的,这似乎是 CMake 中的一个错误。运行 make VERBOSE=1 揭示了 GCC:

    /usr/bin/c++.exe         -g -shared -Wl,--enable-auto-import -o XXX -Wl,-Bstatic -lm -Wl,-Bdynamic -lstdc++ -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32
    

    当叮当声时:

     /usr/bin/clang++ -fPIC -g -shared                          -o XXX -Wl,-Bstatic -lm -Wl,-Bdynamic -lstdc++ -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32
    

    因此,clang++ 似乎没有获得-Wl,--enable-auto-import 标志。手动运行更正后的 clang++ 命令会正确创建预期的.dll.a,从而允许其余的构建按预期进行。

    不过,还没有弄清楚为什么会发生这种情况。在这一点上,我无法破译 CMakes 平台扩展,这似乎是为 GCC 设置的。

    更新:我已经报告了这个here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2016-09-19
      相关资源
      最近更新 更多