include headers to OpenCL .cl file

I"ve written an OpenCL kernel in .cl file, it has several include files (.h) . The compilation of it fails ,since the included header files are “not found”. I am aware that in the clBuildProgram exists the option -I dir ,which adds the directory dir to the list of directories to be searched for the header files. In the khronus site forum this post talks about the issue. They propose to use clCreateProgramWithSource which specifies all sources (including .h files). I have a questions regarding this issue:

1.Which option is better?(clBuildProgram vs. clCreateProgramWithSource,as described above)
2.If I use clCreateProgramWithSource how is it known for compiler what to include?I mean which source stands for which include file name?
3.If I use clBuildProgram and there are several directories with include files?How do I specify them?