我正在处理单头库(https://github.com/zserge/webview)。
我使用CMake(https://github.com/zserge/webview/blob/master/CMakeLists.txt)作为C和C ++的默认构建系统。我使用INTERFACE
类型的目标,因为我的库只是一个C头。
由于该库是跨平台的,因此某些部分必须使用Objective-C for MacOS编写。
目前,我为库定义target_compile_options
,我在其中为MacOS版本添加-x objective-c
,以便调用者不再担心此构建标志。
但是如果我想从C ++项目中使用这个库 - 我需要提供-x objective-c++
。如果我为使用INTERFACE
库的可执行文件添加此编译选项 - 命令行会被错误地混淆,例如-x objective-c objective-c++
会导致错误。
我想知道这里最好的解决方案是什么?是否可以根据调用者语言(C vs C ++)为INTERFACE
库提供不同的选项集?或者有没有办法从主可执行文件覆盖INTERFACE
库编译标志?