4

出力としてディレクトリを生成する外部ツールを含むビルドをセットアップしようとしています(doxyindexer好奇心のために)。これまでのところ、基本的に次のコマンドを取得しています。

target = "doxysearch.db/iamchert"
doxygen.Doxyindexer(target,["project1.xml","project2.xml","project3.xml"])
Default([target])
Default(Install(ARGUMENTS["cgibin"],"doxysearch.db"))

target私が抱えている問題は、ディレクトリ内のランダムなファイルではなく、ディレクトリ自体になりたいと思うことです。ビルドするまでターゲットは存在しないため、glob できるものは何もありません。ディレクトリをターゲットとして使用すると、次のエラーが発生します。

TypeError: Tried to lookup Dir 'doxysearch.db' as a File.:

iamchertそれが私がターゲットに選んだ理由です。私のアプローチがハックであっても、これらの行はすべて期待どおりに機能しているようです。ただし、最後の行を機能させることはできません。ユーザーがコマンドラインで指定しdoxysearch.dbたディレクトリにディレクトリをコピーする必要があります。cgi-bin多分誰かがこのステップを正しく行う方法を説明できますか? 私はsconsに関しては初心者です!

関連するすべての検索語が一般的すぎて、特定のヘルプを見つけることができないため、答えをグーグルで検索するのに苦労しています!

4

2 に答える 2

3

ターゲットがディレクトリである場合に SCons がどの程度うまく機能するかはわかりません。問題は、SCons がディレクトリが変更されたかどうか、またはディレクトリを構築する必要があるかどうかを判断するにはどうすればよいかということです。明らかな答えは、ディレクトリにファイルが多かれ少なかれある場合、ディレクトリが変更されたと見なされるということですが、SCons は現在このチェックを行っていないと思います。それを取得するには、独自のビルダーを作成する必要があるかもしれません。

これをテストするために次の例を実行しましたが、ビルドされません。

env = Environment()
env.Command(target = 'targetDir',
            source = 'srcTextFile',
            action = Copy("$TARGET", "$SOURCE"))

SCons を実行すると、常に同じ結果が得られます。

scons: '.' is up to date

SCons コードに関しては、次のようにするとうまくいくと思います。

targetDir = "doxysearch.db/iamchert"
srcFiles = ["project1.xml","project2.xml","project3.xml"]

doxygenTarget = doxygen.Doxyindexer(targetDir, srcFiles)

    # This may need to be called via the Command() builder like this:
    # cmd = "doxygen.Doxyindexer("$TARGET", "$SOURCE")
    # doxygenTarget = env.Command(target=targetDir, source=srcFiles, action=cmd)

# This call to Default isnt really necessary
Default(doxygenTarget)
Install(ARGUMENTS["cgibin"], doxygenTarget)
于 2013-06-02T13:22:12.933 に答える