0

私は C++ プロジェクトを持っており、ビルドのために から に移行しVisual Studio SolutionsSConsいるので、Linux ユーザーも私のコードをビルドできます。これは SCons への私の最初の進出であり、単純なプロジェクトで非常にうまく機能しています。ただし、このプロジェクトでは、ネストされたディレクトリ構造があります。

main/
  sub1/*.cpp
  sub2/*.cpp
  sub3/*.cpp
  file1.cpp
  file2.cpp

そして、私は次のSConstructファイルを持っています:

env = Environment()
env['PCHSTOP'] = 'stdafx.hpp'
env['PCH'] = env.PCH('stdafx.cpp')[0]

env.Program('program', [
  'file1.cpp',
  'file2.cpp',
  'sub1/file1.cpp',
  'sub2/file1.cpp',
  'sub3/file1.cpp'
])

コマンド ラインから実行sconsすると、次のエラーが発生します。

fatal error C1083: Cannot open include file: 'stdafx.hpp': No such file or directory

明らかに、これは MSVC エラーです。しかし、これはSconsで解決できるはずですが、方法がわかりません..

デフォルトでは、Visual Studio はすべての *.obj ファイルをビルド ディレクトリにコピーしてからリンクすることに気付きました。これは解決策の一部かもしれないと思いますが、やはり確信が持てません。

私が確信しているのは、誰かがこの問題に遭遇したのはこれが初めてではないということですが、Google は私のために何も表示しませんでした.

PS: 例とは異なり、どのファイルにも名前の競合はなく、理論的には問題なく SCons によってフラット化されたフォルダー構造に移動できます。

4

1 に答える 1

0

これは、「CPPPATH」変数を介して環境に適切なインクルード パスを指定する必要があるように見えますが、完全なコマンド ラインを見ないとわかりません。すべての SCons env は最初はクリーンであることを忘れないでください。したがって、間違った作業ディレクトリにいる場合、別のフォルダーにある場合、単純な「#include」ではヘッダーが見つかりません。SCons の UserGuideを見てください。14 "Hierarchical Builds" . いくつかのアイデアや洞察が得られるかもしれません。または、scons-users@scons.org のユーザー メーリング リストに来てください。

于 2014-10-09T07:16:51.910 に答える