libswiftDemangle.so 在 Linux
libswiftDemangle.so on Linux
在 Mac 机器上编译 Swift 时,创建了一个动态库 libswiftDemangle.dylib
。我也需要在 Linux 机器上创建的动态库,但是,动态库不是在源代码编译后创建的。
位于 lib/SwiftDemangle/CMakeLists.txt
的文件 CMakeLists.txt
包含:
add_swift_library(swiftDemangle SHARED
SwiftDemangle.cpp
MangleHack.cpp
LINK_LIBRARIES swiftBasic)
指令,但未创建库。
我使用此命令 ./swift/utils/build-script -R -c --build-subdir build --install-prefix /mnt/servers/swift/install -j4
来构建项目,最终它运行 cmake
和 ninja
来构建项目。
有什么想法吗?
我可以试着解释为什么库没有在 Linux 上构建,即使可能已经晚了。
包含您提到的库的主要子目录是:
https://github.com/apple/swift/tree/master/lib
要在该目录中构建以子目录组织的库,使用以下 CMakeLists.txt
:
https://github.com/apple/swift/blob/master/lib/CMakeLists.txt
。
从这个文件中可以清楚地看到,您提到的库仅在系统为 OSX/Darwin 而不是 Linux 的情况下构建。上述CMakeLists.txt
中的相关代码为:
add_subdirectory(RemoteAST)
add_subdirectory(Sema)
add_subdirectory(Serialization)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_subdirectory(SwiftDemangle)
endif()
add_subdirectory(SIL)
add_subdirectory(SILGen)
如你所见,
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_subdirectory(SwiftDemangle)
endif()
阻止 SwiftDemangle
在 Linux 上构建。
表面上的双重检查可以看一下:
https://github.com/apple/swift/blob/master/lib/SwiftDemangle/CMakeLists.txt
这将仅安装或 simlynk *.dylib
个文件。
值得一提的是 swift-demangle
工具(与您要求的不同)
https://github.com/apple/swift/tree/master/tools/swift-demangle
建立在 Linux.
之上
在 Mac 机器上编译 Swift 时,创建了一个动态库 libswiftDemangle.dylib
。我也需要在 Linux 机器上创建的动态库,但是,动态库不是在源代码编译后创建的。
位于 lib/SwiftDemangle/CMakeLists.txt
的文件 CMakeLists.txt
包含:
add_swift_library(swiftDemangle SHARED
SwiftDemangle.cpp
MangleHack.cpp
LINK_LIBRARIES swiftBasic)
指令,但未创建库。
我使用此命令 ./swift/utils/build-script -R -c --build-subdir build --install-prefix /mnt/servers/swift/install -j4
来构建项目,最终它运行 cmake
和 ninja
来构建项目。
有什么想法吗?
我可以试着解释为什么库没有在 Linux 上构建,即使可能已经晚了。
包含您提到的库的主要子目录是:
https://github.com/apple/swift/tree/master/lib
要在该目录中构建以子目录组织的库,使用以下 CMakeLists.txt
:
https://github.com/apple/swift/blob/master/lib/CMakeLists.txt
。
从这个文件中可以清楚地看到,您提到的库仅在系统为 OSX/Darwin 而不是 Linux 的情况下构建。上述CMakeLists.txt
中的相关代码为:
add_subdirectory(RemoteAST)
add_subdirectory(Sema)
add_subdirectory(Serialization)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_subdirectory(SwiftDemangle)
endif()
add_subdirectory(SIL)
add_subdirectory(SILGen)
如你所见,
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_subdirectory(SwiftDemangle)
endif()
阻止 SwiftDemangle
在 Linux 上构建。
表面上的双重检查可以看一下:
https://github.com/apple/swift/blob/master/lib/SwiftDemangle/CMakeLists.txt
这将仅安装或 simlynk *.dylib
个文件。
值得一提的是 swift-demangle
工具(与您要求的不同)
https://github.com/apple/swift/tree/master/tools/swift-demangle
建立在 Linux.
之上