cmake - 克隆不同类型的库
问题描述
在我的项目中,我们将每个库创建为模块库并安装它们。因此,我们无法在单元测试中链接这些库目标。
add_library(foo MODULE foo.h foo.cpp)
target_link_libraries(foo PUBLIC bar::bar)
install(TARGET foo DESTINATION bin)
target_include_directories(foo PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
add_executable(foo_tester fooTester.cpp)
target_link_libraries(foo_tester foo) #not possible. foo is a module
add_test(NAME foo_tester COMMAND foo_tester)
我的想法是克隆具有不同类型的库。但这似乎很容易出错
function(cloneLibrary TARGET)
get_target_property(desired_sources ${TARGET} SOURCES)
get_target_property(desired_source_dir ${TARGET} SOURCE_DIR)
get_target_property(desired_include_dir ${TARGET} INCLUDE_DIRECTORIES)
get_target_property(desired_link_libraries ${TARGET} LINK_LIBRARIES)
get_target_property(desired_name ${TARGET} NAME)
set(obj_name ${desired_name}_objLib)
add_library(${obj_name} OBJECT ${desired_sources})
target_link_libraries(${obj_name} PUBLIC ${desired_link_libraries})
target_include_directories(${obj_name} PUBLIC ${desired_source_dir} ${desired_source_dir}})
endfunction(cloneLibrary)
有没有更简单的模式?任何cmake模块?
解决方案
推荐阅读
- javascript - 在同一页面中有多个反应包的性能影响
- regex - 在正则表达式/日食搜索中查找不包含双斜杠的行
- javascript - Http Post 发送大列表在生产服务器中不起作用
- android - Kotlin Android Studio 未使用的导入指令
- python - 不区分大小写的 argparse 选项,而不会丢失选项列表中的大小写信息
- c# - 在视图中呈现异步操作
- c# - Eventstore 连接导致内存使用和 Web 应用程序崩溃
- excel-formula - #将单元格值转换为日期时出现值错误
- sql-server - 如何使用 sql server 2016 在 SSDT 2017 中部署自定义 SSIS 组件
- wxpython - Ride 无法在 Python 3.7 中打开 - WXPython 问题