具有不同参数的Cmake链接库
我使用具有不同参数的Cmake链接库,cmake,Cmake,我使用cmake-3.15.3进行生成,然后使用ninja构建可执行文件 我有两个依赖于同一库的可执行文件(两个不同的CMakeLists.txt),我使用两个可执行文件中的target\u link\u库链接到它们 此库具有调用自定义python脚本的自定义命令add_custom_command 问题: 我想从不同的可执行文件向这个自定义命令python脚本传递不同的参数。可能吗 公共图书馆: CMakeLists.txt add_library(common_lib) add_custo
cmake-3.15.3
进行生成,然后使用ninja
构建可执行文件
我有两个依赖于同一库的可执行文件(两个不同的CMakeLists.txt
),我使用两个可执行文件中的target\u link\u库
链接到它们
此库具有调用自定义python脚本的自定义命令add_custom_command
问题:
我想从不同的可执行文件向这个自定义命令python脚本传递不同的参数。可能吗
公共图书馆:
CMakeLists.txt
add_library(common_lib)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/input_file.c
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/info_generate.py
-d ${CMAKE_CURRENT_SOURCE_DIR}
-r ${PROJECT_SOURCE_DIR}
-o input_file.c ${foobarBAZ}
DEPENDS ${MR_FILES} ${PROJECT_SOURCE_DIR}/info_generate.py
COMMENT Generating input_file.c
)
执行1:
CMakeLists.txt
add_executable(exec1)
target_link_libraries(exec1
common_lib)
执行2:
CMakeLists.txt
add_executable(exec2)
target_link_libraries(exec2
common_lib)
我想从不同的可执行文件向这个自定义命令python脚本传递不同的参数
不要编写意大利面代码-库用户应该对库本身没有影响。库是自包含的,依赖于库的库不应修改库本身
可能吗
创建将创建库的函数:
cmake_include_guard()
function(add_mycommonlib_library target)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/input_file.c
COMMAND .... ${ARGV}
)
add_library(${target} ${CMAKE_CURRENT_BINARY_DIR}/input_file.c)
endfunction()
然后你会:
# exec1 CMakeLists.txt
include(../gen_common_lib.cmake)
add_mycommonlib_library(exec1_common_lib --some-argument)
add_executable(exec1)
target_link_libraries(exec1 exec1_common_lib)
知道了。因此,在这种情况下,它看起来像丑陋的黑客。需要考虑如何不做这一切。。。不过还是要谢谢你。我认为最好的解决方案是将一个公共库拆分成两个lib,并在每个可执行文件中链接一个必要的lib。看起来不错。研究其他项目如何处理此类情况:我了解cuda或zephyr。