2012-08-12 78 views

回答

3

使用find_program找到fxcadd_custom_command建:

find_program(FXC fxc DOC "fx compiler") 
if(NOT FXC) 
message(SEND_ERROR "Cannot find fxc.") 
endif(NOT FXC) 

add_custom_target(fx ALL) 

foreach(FILE foo.fx bar.fx baz.fx) 
    get_filename_component(FILE_WE ${FILE} NAME_WE) 
    add_custom_command(OUTPUT ${FILE_WE}.obj 
        COMMAND ${FXC} /Fo ${FILE_WE}.obj ${FILE} 
        MAIN_DEPENDENCY ${FILE} 
        COMMENT "Effect-compile ${FILE}" 
        VERBATIM) 
    add_dependencies(fx ${FILE_WE}.obj) 
endforeach(FILE) 

不是作为一个Windows用户,我不知道如果这正是援引fxc正确的方式,但你可以用它修补。还要注意,这不会将目标文件链接到他们需要去的任何地方。这mailing list post可能会帮助你。

+0

它们根本不需要链接 - 它们稍后由可执行文件加载。我如何将它们添加到目标中,以便在它们的源更改时生成它们? – ltjax 2012-08-13 10:14:59

+0

@ltjax:编辑。请注意'add_custom_target'和'add_dependencies'调用。 fx编译器是否输出'.obj'文件? – 2012-08-13 11:05:47

+0

工程就像一个魅力。任何方式我可以将源文件添加到该目标,以便他们出现在VS解决方案资源管理器中? – ltjax 2012-08-15 13:30:06