通过CMake构建rust库并将其用作导入的库目标 我正在重新构建基于CMAP的跨平台构建(MaCOS/Windows,Linux应该很快添加)C++项目,它有第三方锈库作为依赖。到目前为止,rust-lib依赖项是作为预编译库提供的,但我希望将其编译作为我的CMake构建的一部分
我使用CMake makefile exporter在macOS上运行它,将编译后的库作为静态导入库目标引用,并使用命令设置一个自定义目标,通过这样的货物构建rust库通过CMake构建rust库并将其用作导入的库目标 我正在重新构建基于CMAP的跨平台构建(MaCOS/Windows,Linux应该很快添加)C++项目,它有第三方锈库作为依赖。到目前为止,rust-lib依赖项是作为预编译库提供的,但我希望将其编译作为我的CMake构建的一部分,cmake,visual-studio-2019,rust-cargo,ninja,Cmake,Visual Studio 2019,Rust Cargo,Ninja,我使用CMake makefile exporter在macOS上运行它,将编译后的库作为静态导入库目标引用,并使用命令设置一个自定义目标,通过这样的货物构建rust库 add_library (rustlib STATIC IMPORTED) add_custom_target (rustlib_cargo WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/Ext/rustlib/c-api COMMAND
add_library (rustlib STATIC IMPORTED)
add_custom_target (rustlib_cargo
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/Ext/rustlib/c-api
COMMAND cargo rustc --release -- --crate-type staticlib)
# Note: RUSTLIB_OUTPUT is set above refering to the absolute path of the produced platform specific library
set_target_properties (rustlib PROPERTIES IMPORTED_LOCATION ${RUSTLIB_OUTPUT})
add_dependencies (rustlib rustlib_cargo)
在macOS上,在构建与myrustlib
目标链接的目标之前,会调用cargo rustc
命令,如果之前已经构建了锈迹库,则cargo会检测到该锈迹库,它只会跳过该编译。但在Windows上,Microsoft Visual Studio 2019的内置忍者导出器失败,错误如下:
ninja : error : '../../../Ext/rustlib/target/release/deps/rustlib.lib', needed by 'SomeTargetLinkingAgainstRustlib', missing and no known rule to make it
如果我删除行set_target_properties(rustlib properties IMPORTED_LOCATION${rustlib_OUTPUT})
生成正确启动,就会触发rust生成,但正如预期的那样,由于找不到要链接的库,我最终会出现链接器错误。那么,有没有办法引用一个在配置时不存在但保证在编译期间创建的文件