gpt4 book ai didi

c++ - 在 GYP 项目中使用 c++11

转载 作者:IT老高 更新时间:2023-10-28 23:19:28 24 4
gpt4 key购买 nike

我正在尝试使用 gyp 创建一个简单的跨平台 C++ 项目。目前我只是在 Mac 上尝试这个——但希望最终能够为 Windows、Linux、ios 和 android 构建它。这是我正在使用的简单 gyp 文件。我希望能够使用这个 gyp 中的 ninja 以及 xcode/msvc 项目。我知道我需要能够添加
-std=c++11 和 -libstdc++ 到命令行进行 clang,但现在我只看到使用 g++ 而不是 clang 生成的构建文件。

这是我的 gyp 文件。

      {
'targets': [

{
'target_name': 'libtest',
'product_name': 'test',
'type': 'static_library',
'sources': [
'./src/lib.cpp',
],
'include_dirs': [
'include',
],
},

{
'target_name': 'testapp',
'type': 'executable',
'sources': [
'./test/test.cpp',
],
'include_dirs': [
'src',
],
'dependencies': [
'libtest'
],
},
],
}

最佳答案

我在某种程度上已经弄清楚了这一点。至少我让它在 mac 上工作以构建 makefile(不是我最初希望的 ninja)。

首先我必须让 gyp 使用 clang 而不是 g++ ,为此我必须将 make_global_settings 添加到 gyp 文件中。对于跨平台构建来说,这似乎不是一个好的计划。我还可以使用环境变量设置这些,我猜我可能可以根据条件做一些事情来使其特定于 mac。

'make_global_settings': [
['CXX','/usr/bin/clang++'],
['LINK','/usr/bin/clang++'],
],
'targets':
[
......

我必须做的另一件事是添加一个带有 OTHER_CPLUSPLUSFLAGS 和 OTHER_LDFLAGS 的 xcode_settings 字典,具体取决于目标类型。完整示例如下。

{

'make_global_settings': [
['CXX','/usr/bin/clang++'],
['LINK','/usr/bin/clang++'],
],
'targets': [

{
'target_name': 'mylib',
'product_name': 'mylib',
'type': 'static_library',
'sources': [
'src/implementation.cc',
],
'include_dirs': [
'include',
],
'conditions': [
[ 'OS=="mac"', {

'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS' : ['-stdlib=libc++'],
},

}],
],
},

{
'target_name': 'myapp',
'type': 'executable',
'sources': [
'./bin/myapp.cc',
],
'conditions': [
[ 'OS=="mac"', {

'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS' : ['-std=c++11','-stdlib=libc++'],
'OTHER_LDFLAGS': ['-stdlib=libc++'],
},

}],
],
'include_dirs': [
'include',
],
'dependencies': [
'mylib'
],
},
],
}

关于c++ - 在 GYP 项目中使用 c++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171270/

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