【问题标题】:How to build GSL with msvc2010?如何使用 msvc2010 构建 GSL?
【发布时间】:2012-10-27 23:44:33
【问题描述】:

我正在使用 Qt 4.8.3 和 QtCreator,我已经按照说明 here 使用 msvc2010 编译了它们。但是现在我需要链接到 GSL(Gnu 科学图书馆),但目前我只知道如何使用 g++ 构建它,这会产生链接器错误,正如here 所述,这无疑是@EvanTeran 的答案中给出的原因。但是,就我而言,通过 cygwin 使用 g++ 构建 Qt 可能不是一种选择——我刚刚摆脱了多天的噩梦,在此期间我试图这样做,但不能,正如 here 记录的那样。当然有一种方法可以使用 msvc2010 构建 gsl,但是如何?我已经安装了 VS 2012 Express(虽然我以前从未使用过),以防有使用它的解决方案。

编辑:看看 CMake,似乎我能做的最好的事情就是为 GSL 手动创建 CMakeLists.txt 文件的整个层次结构。这有点太多了,所以我放了一个 100pt。赏金上面提到的问题。解决我的问题 Visual Studio 路线(此处)或使用 g++ 将获得赏金和这两个问题的答案。

更新:下面的答案效果很好,但不是无缝的,可能是因为我实际上需要在 VS2012 下编译。需要对代码进行一些调整,例如显式强制转换,这在以前的编译器下显然是可以容忍的,但我的编译器却不能。否则事情进展得很顺利。

【问题讨论】:

    标签: visual-studio qt visual-c++ shared-libraries gsl


    【解决方案1】:

    我在这里实现了对 GSL 的 CMake 构建支持:https://github.com/ampl/gsl

    CMake 可以生成 Visual Studio 解决方案或 NMake 生成文件。例如:

    > git clone git://github.com/ampl/gsl.git
    > cd gsl
    > cmake .
    -- Building for: Visual Studio 10
    -- Check for working C compiler using: Visual Studio 10
    -- Check for working C compiler using: Visual Studio 10 -- works
    ...
    

    这将为 Visual Studio 2010 生成解决方案 (GSL.sln) 和项目文件。

    此 CMake 构建脚本现在包含在 GSL Git 存储库 git://git.savannah.gnu.org/gsl.gitcontrib 目录中。

    自 2014 年 5 月起,使用 GSL_SHARED 选项也支持构建共享库 (DLL)。

    【讨论】:

    • 感谢 vitaut。我相信您已经使用测试程序进行了尝试?这也包括gsl_cblas? (并不是说它还没有用。)
    • 我自己使用它,GSL 附带的测试在 CMake 脚本中处理,因此您可以构建和运行它们。 gslcblas 也包括在内。
    • 可惜不支持dll。我添加了行来设置 dll,但链接时出错。
    • 刚才我很容易在windows上构建gls。你的工作真的很有帮助。谢谢!
    • @vitaut 感谢您分享您的工作。我从 master/contrib 那里得到它,它真的很有用。我非常感谢 RUN_TESTS 项目。
    【解决方案2】:

    您可以使用 CMake 并从 this repository 为您使用的任何 Visual Studio 版本创建自己的构建。查看@vitaut 的the answer 了解更多详情。

    【讨论】:

    • 只要系统让我奖励,你就会得到这个赏金。很好的发现,虽然我不得不做一些调整(稍后会描述)。
    • 这个答案举例说明了为什么只有链接的答案会随着时间的推移而失去价值。
    • 链接已损坏。
    • 链接现在是点击诱饵,存在危险
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多