CMake:从C或C ++使用时具有不同标志的接口库

时间:2018-03-24 11:45:54

标签: c++ objective-c cmake objective-c++

我正在处理单头库(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库编译标志?

0 个答案:

没有答案