如何在 NixOS 上安装 libgtk2.0-dev?
How to install libgtk2.0-dev on NixOS?
我正在尝试从源代码构建此应用程序:https://gitlab.com/TheFrozenWatchers/LeagueDisplays
每当我尝试 运行 make
命令时,它都会失败 'gtk/gtk.h' file not found
。有没有已知的方法可以在 Nix 中安装 libgtk2.0-dev(我假设缺少它是这里的问题)?
作为参考,我使用了这些 nix-shell
个参数:nix-shell -p xorg.libX11 gtk2
。我想 libgtk2 不包含在 gtk2 包中,但我不确定如何真正将正确的 headers 放入环境中以使其工作。
这里有一个 shell.nix
你可以使用:
with import <nixpkgs> {};
stdenv.mkDerivation rec {
name = "league-displays-${version}";
version = "master";
src = ./.;
doCheck = true;
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ gtk2-x11 clang rapidjson ];
preBuild = ''
substituteAllInPlace src/themes_service.h --replace "include/rapidjson/document.h" "rapidjson/document.h"
substituteInPlace Makefile --replace "pkg-config --libs --cflags gtk+-2.0" "pkg-config --libs --cflags gtk+-2.0 RapidJSON"
'';
}
当你输入shell,而不是make
运行buildPhase
。这样 preBuild
步骤 运行s 并应用一些补丁。
尽管我已经考虑了所有已知的依赖项,但由于似乎是一些特定于应用程序的错误,该项目仍然无法构建:
build flags: SHELL=/nix/store/mcyvp1s45scjkkhyb1m16aqlsb8wr6hs-bash-interactive-4.4-p23/bin/bash
clang++ -O3 -g -w -I. -I./src/ -Wl,-rpath,. -L./bin/ -std=c++14 -Wall -lX11 -lXt -lcef -pthread -lrt -lz `pkg-config --libs --cflags gtk+-2.0 RapidJSON` -I./thirdparty/ -c src/background_daemon.cc
src/background_daemon.cc:23:9: error: unknown type name 'AppConfig'
AppConfig* cfg = AppConfig::Acquire();
^
src/background_daemon.cc:23:26: error: use of undeclared identifier 'AppConfig'
AppConfig* cfg = AppConfig::Acquire();
^
src/background_daemon.cc:26:9: error: use of undeclared identifier 'AppConfig'
AppConfig::Release();
^
src/background_daemon.cc:71:9: error: unknown type name 'AppConfig'
AppConfig* cfg;
^
src/background_daemon.cc:76:19: error: use of undeclared identifier 'AppConfig'
cfg = AppConfig::Acquire();
^
src/background_daemon.cc:110:37: error: use of undeclared identifier 'fnvHash'
unsigned int hash = fnvHash(wp.c_str());
^
src/background_daemon.cc:133:13: error: use of undeclared identifier 'AppConfig'
AppConfig::Release();
^
7 errors generated.
make: *** [Makefile:37: background_daemon.o] Error 1
我正在尝试从源代码构建此应用程序:https://gitlab.com/TheFrozenWatchers/LeagueDisplays
每当我尝试 运行 make
命令时,它都会失败 'gtk/gtk.h' file not found
。有没有已知的方法可以在 Nix 中安装 libgtk2.0-dev(我假设缺少它是这里的问题)?
作为参考,我使用了这些 nix-shell
个参数:nix-shell -p xorg.libX11 gtk2
。我想 libgtk2 不包含在 gtk2 包中,但我不确定如何真正将正确的 headers 放入环境中以使其工作。
这里有一个 shell.nix
你可以使用:
with import <nixpkgs> {};
stdenv.mkDerivation rec {
name = "league-displays-${version}";
version = "master";
src = ./.;
doCheck = true;
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ gtk2-x11 clang rapidjson ];
preBuild = ''
substituteAllInPlace src/themes_service.h --replace "include/rapidjson/document.h" "rapidjson/document.h"
substituteInPlace Makefile --replace "pkg-config --libs --cflags gtk+-2.0" "pkg-config --libs --cflags gtk+-2.0 RapidJSON"
'';
}
当你输入shell,而不是make
运行buildPhase
。这样 preBuild
步骤 运行s 并应用一些补丁。
尽管我已经考虑了所有已知的依赖项,但由于似乎是一些特定于应用程序的错误,该项目仍然无法构建:
build flags: SHELL=/nix/store/mcyvp1s45scjkkhyb1m16aqlsb8wr6hs-bash-interactive-4.4-p23/bin/bash
clang++ -O3 -g -w -I. -I./src/ -Wl,-rpath,. -L./bin/ -std=c++14 -Wall -lX11 -lXt -lcef -pthread -lrt -lz `pkg-config --libs --cflags gtk+-2.0 RapidJSON` -I./thirdparty/ -c src/background_daemon.cc
src/background_daemon.cc:23:9: error: unknown type name 'AppConfig'
AppConfig* cfg = AppConfig::Acquire();
^
src/background_daemon.cc:23:26: error: use of undeclared identifier 'AppConfig'
AppConfig* cfg = AppConfig::Acquire();
^
src/background_daemon.cc:26:9: error: use of undeclared identifier 'AppConfig'
AppConfig::Release();
^
src/background_daemon.cc:71:9: error: unknown type name 'AppConfig'
AppConfig* cfg;
^
src/background_daemon.cc:76:19: error: use of undeclared identifier 'AppConfig'
cfg = AppConfig::Acquire();
^
src/background_daemon.cc:110:37: error: use of undeclared identifier 'fnvHash'
unsigned int hash = fnvHash(wp.c_str());
^
src/background_daemon.cc:133:13: error: use of undeclared identifier 'AppConfig'
AppConfig::Release();
^
7 errors generated.
make: *** [Makefile:37: background_daemon.o] Error 1