我有一个小项目,从一对汇编文件创建一个共享库。我一直在尝试按照生成的库这样的示例
具体来说,我的CMakeLists.txt具有:
project(lzvn LANGUAGES C ASM VERSION 1.0.0)
set(lzvn_FULL_VERSION "${lzvn_VERSION_MAJOR}.${lzvn_VERSION_MINOR}.${lzvn_VERSION_PATCH}")
# snip
add_library(FastCompression SHARED lzvn_decode.S lzvn_encode.S)
set_target_properties(FastCompression PROPERTIES
VERSION ${lzvn_FULL_VERSION_MAJOR}.${lzvn_VERSION_MINOR}
SOVERSION ${lzvn_VERSION_MAJOR})
这适用于我用作示例的项目,但不适用于此特定项目。在那里我只得到一个libFastCompression.dylib(或.so)文件,在Mac上,库ID根本不包含任何路径信息。
我是否会忽略/遗忘某些东西,或者我正在寻找没有为汇编文件专门构建的库实现/支持(在CMake中)?
谢谢!
勒内
使用值LINKER_LANGUAGE
将C
属性添加到目标。这导致我的以下链接命令:(至少在Ubuntu上,没有Mac方便)
/usr/bin/cc -fPIC -shared -Wl,-soname,libFastCompression.so.1 -o libFastCompression.so.4.0 CMakeFiles/FastCompression.dir/lzvn_decode.S.o CMakeFiles/FastCompression.dir/lzvn_encode.S.o