<table><tr><td style="">mpyne added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D10450" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>OK then, I think <a href="https://phabricator.kde.org/p/kossebau/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;" rel="noreferrer">@kossebau</a> is right in that this is a dependency issue in the <tt style="background: #ebebeb; font-size: 13px;">lookandfeel</tt> part of plasma-desktop.  The <tt style="background: #ebebeb; font-size: 13px;">kcm_lookandfeel</tt> target declares the JSON dependency (with the CMake macro) in time for CMake to care about it and ensure the generated build system picks up the dependency for automoc to run.  The <tt style="background: #ebebeb; font-size: 13px;">lookandfeel</tt> command line tool target does not add the dependency on the JSON file and there's no other reason for CMake to know that the JSON file must be generated before <tt style="background: #ebebeb; font-size: 13px;">lookandfeel</tt>'s AUTOMOC can complete.</p>

<p>ie. CMake perceives this order as legal:</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">AUTOMOC for <tt style="background: #ebebeb; font-size: 13px;">lookandfeel</tt></li>
<li class="remarkup-list-item">moc runs on kcm.cpp</li>
<li class="remarkup-list-item">JSON generation for AUTOMOC for <tt style="background: #ebebeb; font-size: 13px;">kcm_lookandfeel</tt></li>
<li class="remarkup-list-item">kcm_lookandfeel.json is generated</li>
<li class="remarkup-list-item">AUTOMOC for <tt style="background: #ebebeb; font-size: 13px;">kcm_lookandfeel</tt></li>
<li class="remarkup-list-item">moc runs on kcm.cpp</li>
<li class="remarkup-list-item">build continues</li>
</ol>

<p>2 and 6 are identical here and it seems that CMake is smart enough to only do this once in the whole build, but CMake only has the dependency on the JSON for the moc at step 6, not step 2, so CMake doesn't know that it also needs to delay <tt style="background: #ebebeb; font-size: 13px;">lookandfeel</tt>'s AUTOMOC phase until after JSON generation.</p>

<p>That all said, if <a href="https://phabricator.kde.org/D10607" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D10607</a> works (and that diff is precisely how I'd suggest handling the issue), then I think we can then abandon this revision.  Let me know if you disagree.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R244 KCoreAddons</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D10450" rel="noreferrer">https://phabricator.kde.org/D10450</a></div></div><br /><div><strong>To: </strong>tcberner, FreeBSD, mpyne, bshah, dfaure, rakuco<br /><strong>Cc: </strong>bcooksley, rikmills, rakuco, kfunk, adridg, kossebau, Frameworks, michaelh<br /></div>