【问题标题】:CMAKE get a .so library on windowsCMAKE 在 windows 上获取 .so 库
【发布时间】:2016-04-12 16:04:49
【问题描述】:

我正在尝试使用 cmake 编译一个共享库,以便在 C 程序中进一步与“dlfcn”库一起使用它。我在带有 Cygwin 的 Windows 上,但我不知道如何将“dlfcn”与 Windows 的共享库(.dll 和 .dll.a)一起使用,而我的队友正在使用 Linux。所以我想创建的不是 .dll 和 .dll.a 库,而是 .so 库。我是 cmake 的初学者,有可能这样做还是我必须安装 Linux VM?

【问题讨论】:

  • 欢迎来到 StackOverflow。您要求toolchaincrosscompile。我们讨论的是哪个 Linux 发行版和版本?并且 - 为方便起见 - 您可能需要查看 VisualGDB
  • 非常感谢@Florian,它成功了 :) 我添加了一个具有最小配置的 .cmake 文件以编译为 Linux 程序( set(CMAKE_SYSTEM_NAME Linux) (以及其他一些可选的东西) ),我的库现在是 .so。注意:我的队友正在研究 Gnome。
  • 不客气。你可以self answer你的问题并添加适合你的工具链文件信息。将来它可能会帮助其他有类似问题的 StackOverflow 用户。有关将内容移动到工具链文件的示例,请参阅here

标签: windows dll cmake shared-libraries


【解决方案1】:

所以,感谢@Florian,我终于成功了。对于那些想知道它是如何工作的人来说,这很简单:

  • 创建一个新的 .cmake 文件:

    # this mandatory command will be the one that will make your cross-compiling work
    set(CMAKE_SYSTEM_NAME Linux)
    
    # indicate compilers (optional)
    set(CMAKE_C_COMPILER gcc)
    set(CMAKE_CXX_COMPILER g++)
    
  • 调用 cmake 命令时,添加如下参数:

    cmake -DCMAKE_TOOLCHAIN_FILE=./myToolChainFile.cmake ..
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多