gpt4 book ai didi

CMake 编译生成的文件

转载 作者:行者123 更新时间:2023-12-03 11:55:35 24 4
gpt4 key购买 nike

我有一个在 CMake 构建过程中生成的文件列表。之后我想使用“add_library”编译这些文件,但是在生成之前我不知道生成了哪些文件。无论如何将其构建到 CMake 脚本中?

最佳答案

好吧,我认为这是可能的,所以我将分享我所做的。我的问题是我必须编译几个 CORBA idl 以用作项目源代码的一部分,并且我不想手动列出每个文件。我认为最好找到文件。所以我这样做了:

file(GLOB IDLS "idls/*.idl")
set(ACE_ROOT ${CMAKE_FIND_ROOT_PATH}/ace/ACE-${ACE_VERSION})
foreach(GENERATE_IDL ${IDLS})
get_filename_component(IDLNAME ${GENERATE_IDL} NAME_WE)
set(OUT_NAME ${CMAKE_CURRENT_SOURCE_DIR}/idls_out/${IDLNAME})

list(APPEND IDL_COMPILED_FILES ${OUT_NAME}C.h ${OUT_NAME}C.cpp ${OUT_NAME}S.h ${OUT_NAME}S.cpp)

add_custom_command(OUTPUT ${OUT_NAME}C.h ${OUT_NAME}C.cpp ${OUT_NAME}S.h ${OUT_NAME}S.cpp
COMMAND ${ACE_ROOT}/bin/tao_idl -g ${ACE_ROOT}/bin/ace_gperf -Sci -Ssi -Wb,export_macro=TAO_Export -Wb,export_include=${ACE_ROOT}/include/tao/TAO_Export.h -Wb,pre_include=${ACE_ROOT}/include/ace/pre.h -Wb,post_include=${ACE_ROOT}/include/ace/post.h -I${ACE_ROOT}/include/tao -I${CMAKE_CURRENT_SOURCE_DIR} ${GENERATE_IDL} -o ${CMAKE_CURRENT_SOURCE_DIR}/idls_out/
COMMENT "Compiling ${GENERATE_IDL}")
endforeach(GENERATE_IDL)

set_source_files_properties(${IDL_COMPILED_FILES}
PROPERTIES GENERATED TRUE)

set(TARGET_NAME ${PROJECT_NAME}${DEBUG_SUFFIX})

add_executable(
${TARGET_NAME}
${SOURCE}
${IDL_COMPILED_FILES}
)

如果未创建我的 idl 编译输出之一(*C.cpp、*C.h、*S.cpp 和 *S.h),则 GENERATED 属性很有用,因此构建命令不会提示该文件不存在.

关于CMake 编译生成的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4222326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com