我遇到以下问题:我使用CMake构建了一个SDK。在构建过程中,custom_target会生成一个公共的头文件,该头文件随后将提供给客户端。客户端应用程序需要此头文件,因此SDK附带提供了示例应用程序。因此,在我的构建系统中,示例应用程序当前表达了对生成标头的目标的依赖性,以便在尝试构建示例应用程序之前就生成了标头:
set(TARGET MyExample)
set(SOURCES ${TARGET}.cpp)
add_executable(${TARGET} ${SOURCES})
add_dependencies(${TARGET} InterfaceHeaderGenerator)
# ... more code
现在在客户端系统上,由“ InterfaceGenerator”生成的文件当然已经存在,因此这种依赖关系无效。
我正在寻找一种方法,可以将我的CMake文件发送给客户,使他可以使用它们而无需为“开发”和“客户端”模式维护CMakeLists.txt文件的2个不同副本。
我知道可以使用与CPack关联的生成器表达式解决此问题。但是我不能使用CPack,因为它缺少我需要的另一个功能:能够在多个软件包中运送和安装THE SAME目标。
那有可能吗?
答案 0 :(得分:0)
使用add_dependency()
保护此if(BUILDING_SDK)
调用,并将此变量默认设置为OFF
,在您的情况下设置为ON
。