Skip to content

c++ called by gyp on macos don't respect cflags. #273

@Freed-Wu

Description

@Freed-Wu

I have a project which needs pkg-config --cflags rime so I add

            "cflags": [
                "<!@(pkg-config --cflags rime)",
            ],

to binding.gyp

In linux, it work well. make -Cbuild V=1 tell:

  g++ -o Release/obj.target/rime/binding.o ../binding.cc '-DNODE_GYP_MODULE_NAME=rime' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__STDC_FORMAT_MACROS' '-DNAPI_DISABLE_CPP_EXCEPTIONS' '-DNODE_ADDON_API_DISABLE_DEPRECATED' '-DBUILDING_NODE_EXTENSION' -I/home/wzy/.cache/node-gyp/20.18.0/include/node -I/home/wzy/.cache/node-gyp/20.18.0/src -I/home/wzy/.cache/node-gyp/20.18.0/deps/openssl/config -I/home/wzy/.cache/node-gyp/20.18.0/deps/openssl/openssl/include -I/home/wzy/.cache/node-gyp/20.18.0/deps/uv/include -I/home/wzy/.cache/node-gyp/20.18.0/deps/zlib -I/home/wzy/.cache/node-gyp/20.18.0/deps/v8/include -I/home/wzy/Desktop/coc-rime/node_modules/node-addon-api  -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -I/nix/store/r4d1aphfpvpfj9g2lw6qsnxz42adfc61-librime-1.12.0/include -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF ./Release/.deps/Release/obj.target/rime/binding.o.d.raw   -c

where pkg-config --cflags rime is -I/nix/store/r4d1aphfpvpfj9g2lw6qsnxz42adfc61-librime-1.12.0/include.

In macos, pkg-config can search rime, however, make -Cbuild V=1 don't use it.

c++ -o Release/obj.target/rime/binding.o ../binding.cc '-DNODE_GYP_MODULE_NAME=rime' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DNAPI_DISABLE_CPP_EXCEPTIONS' '-DNODE_ADDON_API_DISABLE_DEPRECATED' '-DBUILDING_NODE_EXTENSION' -I/Users/runner/Library/Caches/node-gyp/23.3.0/include/node -I/Users/runner/Library/Caches/node-gyp/23.3.0/src -I/Users/runner/Library/Caches/node-gyp/23.3.0/deps/openssl/config -I/Users/runner/Library/Caches/node-gyp/23.3.0/deps/openssl/openssl/include -I/Users/runner/Library/Caches/node-gyp/23.3.0/deps/uv/include -I/Users/runner/Library/Caches/node-gyp/23.3.0/deps/zlib -I/Users/runner/Library/Caches/node-gyp/23.3.0/deps/v8/include -I/Users/runner/work/coc-rime/coc-rime/node_modules/node-addon-api  -O3 -gdwarf-2 -fno-strict-aliasing -mmacosx-version-min=11.0 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++20 -stdlib=libc++ -fno-rtti -fno-exceptions -MMD -MF ./Release/.deps/Release/obj.target/rime/binding.o.d.raw   -c
../binding.cc:2:10: fatal error: 'rime_api.h' file not found
#include <rime_api.h>
         ^~~~~~~~~~~~
1 error generated.

only add pkg-config --variables includedir rime to include_dirs can make it work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions