gpt4 book ai didi

makefile - 在Cmake中运行自定义命令

转载 作者:行者123 更新时间:2023-12-04 13:53:00 36 4
gpt4 key购买 nike

我对Cmake还是很陌生,需要在编译时生成一些文件。一旦生成,我需要编译并链接文件。我已经创建了cmake makefile来编译已经生成的文件,例如

cmake_minimum_required(VERSION 2.6)
project(demo)
set(CMAKE_CXX_FLAGS "-DWITH_COOKIES")
add_library(soapC soapC.cpp soapVimBindingProxy.cpp)
add_library(stdsoap2 /home/abdullah/installs/gsoap-shah_edits/gsoap/stdsoap2.cpp)
add_executable(demo test_file.cc test_app.cc)
target_link_libraries(demo soapC stdsoap2 gsoap++)

这样可以成功编译项目。但是,需要首先生成文件 soapC.cpp soapVimBindingProxy.cpp。我想在运行时使用gsoap工具生成这些文件。

以下是生成头文件需要运行的命令
wsdl2h -o outfile.h infile.wsdl

这将输入wsdl文件,并创建一个相应的outfile.h。
现在我尝试像这样在cmake中这样做
cmake_minimum_required(VERSION 2.6)
add_custom_command(
OUTPUT vsphere.h
COMMAND wsdl2h -o vsphere.h vim25/vim.wsdl
)

但是这里出了点问题。没有错误弹出,但也没有创建文件。我想念什么吗?所有帮助,不胜感激。
谢谢。

最佳答案

您刚刚创建了用于生成头文件的命令,因此CMake知道从何处获取vsphere.h。我建议在OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vsphere.h调用中使用add_custom_command()

现在您需要创建一个目标:

add_custom_target(vsphere_header ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vsphere.h)

最后,使 soapC目标依赖于它:
add_dependencies(soapC vsphere_header)

确保将 add_dependencies()调用放在 soapC目标定义之后。

关于makefile - 在Cmake中运行自定义命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11390236/

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