<div class="gmail_quote">On Mon, Dec 12, 2011 at 1:53 PM, Michael Wild <span dir="ltr">&lt;<a href="mailto:themiwi@gmail.com">themiwi@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">&gt; CMake script would imply that it runs as part of the configuration</div><div class="im">
&gt; process. I can&#39;t build an installer until all binaries are compiled and<br>
&gt; linked, so it needs to be a target in visual studio.<br>
<br>
</div>Wrong.<br>
<br>
add_custom_command(<br>
  COMMAND ${CMAKE_EXECUTABLE} -DVAR=VAL<br>
    -P ${PROJECT_BINARY_DIR}/script.cmake<br>
  DEPENDS ${PROJECT_BINARY_DIR}/script.cmake<br>
  WORKING_DIRECTORY ${PROJECT_BINARY_DIR}<br>
  COMMENT &quot;Running script.cmake&quot;<br>
  VERBATIM)<br></blockquote><div><br></div><div>Interesting, I didn&#39;t even think about doing this. Good job :) I will do this.</div><div><br></div><div>I can use add_custom_target instead though, right? Why do you use add_custom_command here? I don&#39;t know how that translates in Visual Studio.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">&gt;<br>
&gt; Problem with pushing this out to a batch file is that I only have 9<br>
&gt; parameters maximum that I can use to pass CMake variables. I need more<br>
&gt; than 9, as you can see from the number of variables I use in the script<br>
&gt; I sent you. I can&#39;t think of a good design for this. Not to mention I<br>
&gt; hate batch files.<br>
<br>
</div>Configured CMake file, it is.<br>
<br>
set(VAR1 VAL1)<br>
set(VAR2 VAL2)<br>
set(VAR3 VAL3)<br>
configure_file(<a href="http://script.cmake.in" target="_blank">script.cmake.in</a> ${PROJECT_BINARY_DIR}/script.cmake @ONLY)<br>
<br>
<br>
Where <a href="http://script.cmake.in" target="_blank">script.cmake.in</a> could look like this:<br>
<br>
set(ENV{VAR1} &quot;@VAR1@&quot;)<br>
set(ENV{VAR2} &quot;@VAR2@&quot;)<br>
set(ENV{VAR3} &quot;@VAR3@&quot;)<br>
message(STATUS<br>
  &quot;DEBUG: VAR1=$ENV{VAR1}, VAR2=$ENV{VAR2}, VAR3=$ENV{VAR3}&quot;)<br>
<div class="im"><br>
<br>
&gt;<br>
&gt; But moving it out to a batch file will guarantee that I can setup the<br>
&gt; environment properly (set environment variables) and also when users<br>
&gt; change the way the installer works, CMake won&#39;t need to be reconfigured,<br>
&gt; which is a huge plus.<br>
&gt;<br>
&gt; Any advice here on how I could setup my batch file to accept more than 9<br>
&gt; parameters from CMake?<br>
<br>
</div>Make it a configured file. Either batch or CMake script, as shown above.</blockquote><div><br></div><div>If I use a CMake script, I won&#39;t need it to be configured, right? As I can pass in as many -D arguments as I want it seems.</div>
<div><br></div><div>I definitely like CMake scripts better than batch files, so I will go with CMake scripts. Thanks for the insight. </div></div>