cmake 不会将多个 .lib 合并, 因此可能需要使用 add_custom_command
命令手动使用 MSVC 工具 lib.exe
来创建最终具有 C ABI 的 .lib 静态库文件供Rust调用.
set(Target "output") add_library("${Target}" STATIC lib.cpp) target_include_directories("${App}" PUBLIC "${CMAKE_HOME_DIRECTORY}/src") target_link_libraries("${App}" Win32Helper) # 很遗憾, output.lib 中对另一个静态库Win32Helper的调用是未寻址的!
其它的解决办法:
set(Target "output") file(GLOB_RECURSE files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" ../Win32Helper/*.c) add_library("${Target}" STATIC lib.cpp ${files})