On Wed, Sep 23, 2009 at 10:29 PM, Michael Jackson <span dir="ltr">&lt;<a href="mailto:mike.jackson@bluequartz.net">mike.jackson@bluequartz.net</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I just include some CMake code to copy the Qt Dlls from the Qt installation directory into the local Debug or Release directories. Kinda clunky but gets the job done.<br></blockquote><div><br>We do it in the same way actually, but then a bit automated, by searching for specific folders in our build environment (e.g. deps/runtime/&lt;package name&gt;/[shared|debug|release]).<br>
<br>I have a deadline coming up, so I&#39;ll have to do some actual results-spawning work first :-) But next week I am going to try using the install method described above, because that&#39;s easier to maintain, and then the files are only copied when necessary (that is, when actually debugging a build of a certain configuration).<br>
<br>Greetz,<br>JeDi<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font color="#888888">
<br>
--<br>
Mike Jackson &lt;<a href="http://www.bluequartz.net" target="_blank">www.bluequartz.net</a>&gt;</font><div><div></div><div class="h5"><br>
<br>
<br>
On Sep 23, 2009, at 3:09 PM, Jeroen Dierckx wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wed, Sep 23, 2009 at 9:06 PM, Anatoly Shirokov &lt;<a href="mailto:shirokov_a@mail.ru" target="_blank">shirokov_a@mail.ru</a>&gt; wrote:<br>
We use the RUNTIME_OUTPUT_DIRECTORY property to specify runtime location  for each target:<br>
<br>
set_target_properties(bla-bla-bla<br>
   PROPERTIES<br>
   RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Execute/${CMAKE_BUILD_TYPE})<br>
)<br>
I hope it helps.<br>
<br>
Thanks, but the problem I was facing was about dlls and other files from external dependencies that need to be copied to the runtime directory.<br>
<br>
<br>
Jeroen Dierckx:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Hi,<br>
<br>
In Windows, we need to copy a bunch of files (dlls and other runtime<br>
dependencies) to the runtime directory, mostly belonging to external<br>
dependencies. Those files are different for debug and release builds.<br>
So I created a function to do just that. I came across several<br>
problems or limitations in cmake while doing that. Here is how I did<br>
it, and some remarks for each step<br>
<br>
- For a certain external dependency, I look for a specific<br>
platform-dependent directory, with some shared files, and some only<br>
for debug or release builds. I have to exclude certain files and<br>
directories (.svn directories in this case). It would be nice to have<br>
an EXCLUDE parameter for the file(GLOB* functions, like in the install<br>
function. I worked around this by iterating over all the files in the<br>
list and removing them when they match a certain REGEX.<br>
<br>
- I wanted to create post-build command to copy the necessary files<br>
after building, because they are only needed when actually<br>
running/debugging the application. There currently is no way to<br>
generate different custom commands for different configurations. I<br>
could work around this by using some if-tests inside the custom<br>
command itself, but I decided against it because it would be too<br>
Visual Studio-specific.<br>
<br>
- So I copy all files to each build directory (one for each<br>
configuration that is generated, mind that for Visual Studio no build<br>
configuration is chosen at configure time) in cmake. This of course is<br>
not very optimal, as it copies the files for all configurations, also<br>
the ones I will probably never build. Here I used the cmake command<br>
with -E copy_if_different. This works, but spawns a new process for<br>
each file to be copied. I could use configure_file, but that seemed a<br>
bit hacky to me.<br>
<br>
All in all, my method works, but to summarize, the following features<br>
would be a nice addition to cmake:<br>
- an EXCLUDE parameter for the file globbing commands<br>
- configuration-specific custom commands<br>
- a cmake command to copy files (with a parameter to only do it when<br>
the files differ)<br>
<br>
Greetz,<br>
JeDi<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
<br>
<br>
<br>
</blockquote>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</blockquote>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</div></div></blockquote></div><br>