私は C++ プロジェクトを持っており、ビルドのために から に移行しVisual Studio SolutionsてSConsいるので、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 によってフラット化されたフォルダー構造に移動できます。