<div dir="ltr">Hi,<div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 31, 2013 at 10:52 PM, Eric Noulard <span dir="ltr">&lt;<a href="mailto:eric.noulard@gmail.com" target="_blank">eric.noulard@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">2013/7/31 Andreas Pakulat &lt;<a href="mailto:apaku@gmx.de">apaku@gmx.de</a>&gt;:<br>
<div><div class="h5">&gt; Hi,<br>
&gt;<br>
&gt; On Sat, Jul 27, 2013 at 12:39 AM, Andreas Pakulat &lt;<a href="mailto:apaku@gmx.de">apaku@gmx.de</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m having a project here where cmake refuses to recognize the &quot;COMPONENT&quot;<br>
&gt;&gt; option for the install() command for certain targets.<br>
&gt;&gt;<br>
&gt;&gt; Within the project there are several subdirs, the top-level CMakeLists.txt<br>
&gt;&gt; has a component-install rule like this:<br>
&gt;&gt;<br>
&gt;&gt; INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/html DESTINATION<br>
&gt;&gt; share/doc/myapp COMPONENT documentation)<br>
&gt;&gt;<br>
&gt;&gt; which generates the expected output in the cmake_install.cmake file.<br>
&gt;&gt; However several subdirectories contain executable targets for which the<br>
&gt;&gt; cmake_install.cmake file uses the &quot;Unspecified&quot; component. The executable<br>
&gt;&gt; target files look like this:<br>
&gt;&gt;<br>
&gt;&gt; SET(SOURCES<br>
&gt;&gt;         main.cpp object.cpp)<br>
&gt;&gt;<br>
&gt;&gt; SET(MOCABLES<br>
&gt;&gt;         object.h)<br>
&gt;&gt;<br>
&gt;&gt; QT4_WRAP_CPP(MOC_SOURCES ${MOCABLES})<br>
&gt;&gt;<br>
&gt;&gt; ADD_EXECUTABLE(myapp ${SOURCES} ${MOC_SOURCES})<br>
&gt;&gt; TARGET_LINK_LIBRARIES(myapp ${QT_LIBRARIES})<br>
&gt;&gt;<br>
&gt;&gt; # Installation<br>
&gt;&gt; INSTALL(TARGETS myapp RUNTIME DESTINATION bin<br>
&gt;&gt;                        ARCHIVE DESTINATION lib<br>
&gt;&gt;                        LIBRARY DESTINATION lib<br>
&gt;&gt;                        COMPONENT applications)<br>
&gt;&gt;<br>
&gt;&gt; I can&#39;t seem to find a reason for this misbehaviour using cmake --trace or<br>
&gt;&gt; cmake --debug-output. Are there any other ways (short of patching +<br>
&gt;&gt; compiling cmake) to find out what goes wrong here? And if not, can someone<br>
&gt;&gt; give me a hint where to start patching?<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m using cmake 2.8.11.2 on Debian/GNU Linux.<br>
&gt;&gt;<br>
&gt;&gt; In a very small example with just an executable target in a single cmake<br>
&gt;&gt; file everything works fine, but minimizing the real codebase is quite a bit<br>
&gt;&gt; harder than I thought.<br>
&gt;<br>
&gt;<br>
&gt; It seems that the issue is that I&#39;m listing &#39;COMPONENT&#39; after the various<br>
&gt; destinations. This seems to confuse the parsing of the arguments in<br>
&gt; cmInstallCommand, as the genericArgs in ::HandleTargetsMode always yields<br>
&gt; &#39;Unspecified&#39; unless I move COMPONENT before the DESTINATIONS.<br>
<br>
</div></div>I&#39;m not sure to fully understand your testcase but<br>
the keywords specified after ARCHIVE|LIBRARY|RUNTIME|FRAMEWORK|BUNDLE|<br>
                   PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE<br>
<br>
should be repeated for each of them.<br>
<br>
i.e. one shall not write<br>
<div class="im">INSTALL(TARGETS myapp<br>
                        RUNTIME DESTINATION bin<br>
                        ARCHIVE DESTINATION lib<br>
                        LIBRARY DESTINATION lib<br>
                        COMPONENT applications)<br>
<br>
</div>but<br>
INSTALL(TARGETS myapp<br>
                        RUNTIME DESTINATION bin COMPONENT applications<br>
                        ARCHIVE DESTINATION lib COMPONENT applications<br>
<div class="im">                        LIBRARY DESTINATION lib COMPONENT applications)<br>
<br>
</div>I.e COMPONENT should be repeated just as &quot;DESTINATION&quot; is.<br>
<div class="im"><br>
&gt; The cmake docs do not indicate any importance on the order, but I finally<br>
&gt; have a minimal testcase and can file a bugreport.<br>
<br>
</div>I don&#39;t think the doc is wrong but the nested bracket level [[[ ]]]<br>
makes it confusing to understand.<br></blockquote><div><br></div><div>Ugh, you&#39;re right and yes the brackets really don&#39;t help in understanding this. Well </div></div><br></div></div>