[CMake] CMake 2.8.8-rc1, Ninja generator, and clean target
Nicolas Desprès
nicolas.despres at gmail.com
Fri May 18 12:41:17 EDT 2012
On Wed, May 16, 2012 at 11:54 PM, Peter Collingbourne <peter at pcc.me.uk> wrote:
> On Mon, Apr 02, 2012 at 02:21:10PM +0200, Nicolas Desprès wrote:
>> Hi,
>>
>> It looks like an issue in the generator. The symlink is created as a
>> side effect of a rule and not mentioned in the output files. That's
>> why it does not get removed. I have pushed a patch on my CMake's
>> github clone that should fix the issue without breaking cmake's test
>> suite. Although it seems to works for your case, I'm not sure it is
>> the right way to fix this issue. I think you should open a ticket on
>> the bug tracker.
>>
>> The branch: https://github.com/polrop/CMake/commits/ninja-clean-lib-symlink
>> The patch: https://github.com/polrop/CMake/commit/7d9c4bec56e8ec34ac715a4e4bda0f0f55002ef0
>>
>> Peter could you review it please?
>
> Apologies for the slow response.
No problem.
>
> Perhaps I am being over cautious, but should this conditional:
>
> if (targetOutputReal == soName) {
>
> read:
>
> if (targetOutput == soName || targetOutputReal == soName) {
>
> Otherwise, LGTM.
I think you are right according to:
int cmake::SymlinkLibrary(std::vector<std::string>& args)
{
int result = 0;
std::string realName = args[2];
std::string soName = args[3];
std::string name = args[4];
if(soName != realName)
{
if(!cmake::SymlinkInternal(realName, soName))
{
cmSystemTools::ReportLastSystemError("cmake_symlink_library");
result = 1;
}
}
if(name != soName)
{
if(!cmake::SymlinkInternal(soName, name))
{
cmSystemTools::ReportLastSystemError("cmake_symlink_library");
result = 1;
}
}
return result;
}
I have amended the patch, rebased it on master and pushed it.
Thanks,
-Nico
More information about the CMake
mailing list