2

C++ プロジェクトにパッケージ マネージャーnixを使用しようとしています。

default.nix:

{ pkgs ? import <nixpkgs> {} }:
let
  stdenv = pkgs.stdenv;
in rec {
  myProject = stdenv.mkDerivation {
    name = "lynx";
    version = "dev-0.4.0";
    buildInputs = [
      pkgs.cmake
      pkgs.gtest
    ];
  }; 
}

問題なくcmakeを使用して、プロジェクトをそのディレクトリにビルドしました。次に、プロジェクトを Eclipse プロジェクトとしてエクスポートしました ( nix-shellで実行しました)。

cd ..
mkdir lynx_eclipse
cd lynx_eclipse
cmake -G"Eclipse CDT4 - Unix Makefiles" -D PLATFORM:STRING="posix"  -DCMAKE_BUILD_TYPE=Debug ../lynx/

エクスポートされたプロジェクトを Eclipse で開いたところ、インクルード パスに問題がなく、/nix/store/* を指していることがわかりました。しかし、プロジェクトをビルドしようとすると、エラーが発生します:

gtest/gtest.h: そのようなファイルまたはディレクトリはありません

Eclipse が nix のパスをコンパイラ フラグに追加していないことがわかります。

 /nix/store/ix03iknfgyrx7421fppjdczd9r4sw7pz-gcc-wrapper-5.3.0/bin/g++    -I/home/ubuntu-pc/dcs/lynx/inc -I/home/ubuntu-pc/dcs/lynx_eclipse/inc -I/home/ubuntu-pc/dcs/lynx/test/./inc  -std=c++11 -static-libstdc++ -g   -o CMakeFiles/test_utils.dir/utils_test.cpp.o -c /home/ubuntu-pc/dcs/lynx/test/utils_test.cpp

それが問題の原因かもしれませんが、Eclipse の動作を変更する方法がわかりません。

4

1 に答える 1

1

ビューの数から判断すると、問題は非常に具体的です。しかし、私は何とか解決策を見つけました。

Eclipse プロジェクトにエクスポートした後、builder.sh ファイルを作成しました。

export NIX_PATH=nixpkgs=/home/xxxx/.nix-defexpr/channels/nixpkgs
/home/xxxx/.nix-profile/bin/nix-shell default.nix --run "make $1"

次に、ファイルをC\C++ General -> C\C++ Make Projectでビルド コマンドとして設定します。

bash ${project_loc}/build.sh

それで全部です。

于 2016-04-29T12:42:22.273 に答える