scons - 编译后运行程序

时间:2012-06-17 09:40:35

标签: c++ python scons

我想在编译后直接运行构建的程序,这样我就可以使用scons构建和启动我的程序。

我认为这个SConstruct-File会在重建时启动程序。

main = Program( "main", [ "main.cc" ] )

test = Command( None, None, "./main >testoutput" )
Depends( test, main )

每次我运行scons

时,都会启动它
main = Program( "main", [ "main.cc" ] )

test = Command( None, None, "./main >testoutput" )
Requires( test, main )

但两者都不起作用,我的程序永远不会被执行。我做错了什么?

2 个答案:

答案 0 :(得分:8)

只有在构建它时才能更好地运行程序。

main = Program( "main", [ "main.cc" ] )

test = Command( target = "testoutput",
                source = "./main",
                action = "./main > $TARGET" )
Depends( test, main )

使用AlwaysBuild()每次都运行它,正如@doublep所提到的那样:

main = Program( "main", [ "main.cc" ] )

test = Command( target = "testoutput",
                source = "./main",
                action = "./main > $TARGET" )
AlwaysBuild( test )

如果你想看到testoutput的内容,你可以这样做:

(假设Linux。用一些Python代码打印文件会更容易)

main = Program( "main", [ "main.cc" ] )

test = Command( target = "testoutput",
                source = "./main",
                action = ["./main > $TARGET",
                          "cat $TARGET"] )
AlwaysBuild( test )

答案 1 :(得分:4)

每次运行SCons时都会运行ls

ls = Command ('ls', None, 'ls')
AlwaysBuild ('ls')
Default ('ls')

你从未告诉SCons为什么以及何时应该运行你的命令。你应该例如将其作为依赖项添加到其他目标或使其成为默认目标。

如果你想运行命令总是,也就是说无论正在构建什么目标,你都应该使用标准的Python工具运行它来启动外部程序。