mirror of
https://github.com/reactos/CMake.git
synced 2024-12-16 08:07:29 +00:00
4878c00905
"imported" executable target. This can then be used e.g. with ADD_CUSTOM_COMMAND() to generate stuff. It adds a second container for "imported" targets, and FindTarget() now takes an additional argument bool useImportedTargets to specify whether you also want to search in the imported targets or only in the "normal" targets. Alex
91 lines
2.2 KiB
C++
91 lines
2.2 KiB
C++
/*=========================================================================
|
|
|
|
Program: CMake - Cross-Platform Makefile Generator
|
|
Module: $RCSfile$
|
|
Language: C++
|
|
Date: $Date$
|
|
Version: $Revision$
|
|
|
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
|
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notices for more information.
|
|
|
|
=========================================================================*/
|
|
#include "cmAddExecutableCommand.h"
|
|
|
|
// cmExecutableCommand
|
|
bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args)
|
|
{
|
|
if(args.size() < 2 )
|
|
{
|
|
this->SetError("called with incorrect number of arguments");
|
|
return false;
|
|
}
|
|
std::vector<std::string>::const_iterator s = args.begin();
|
|
|
|
std::string exename = *s;
|
|
|
|
++s;
|
|
bool use_win32 = false;
|
|
bool use_macbundle = false;
|
|
bool excludeFromAll = false;
|
|
bool importTarget = false;
|
|
while ( s != args.end() )
|
|
{
|
|
if (*s == "WIN32")
|
|
{
|
|
++s;
|
|
use_win32 = true;
|
|
}
|
|
else if ( *s == "MACOSX_BUNDLE" )
|
|
{
|
|
++s;
|
|
use_macbundle = true;
|
|
}
|
|
else if(*s == "EXCLUDE_FROM_ALL")
|
|
{
|
|
++s;
|
|
excludeFromAll = true;
|
|
}
|
|
else if(*s == "IMPORT")
|
|
{
|
|
++s;
|
|
importTarget = true;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (importTarget)
|
|
{
|
|
cmTarget* target = this->Makefile->AddNewTarget(cmTarget::EXECUTABLE, exename.c_str(), true);
|
|
return true;
|
|
}
|
|
|
|
if (s == args.end())
|
|
{
|
|
this->SetError
|
|
("called with incorrect number of arguments, no sources provided");
|
|
return false;
|
|
}
|
|
|
|
std::vector<std::string> srclists(s, args.end());
|
|
cmTarget* tgt = this->Makefile->AddExecutable(exename.c_str(), srclists,
|
|
excludeFromAll);
|
|
if ( use_win32 )
|
|
{
|
|
tgt->SetProperty("WIN32_EXECUTABLE", "ON");
|
|
}
|
|
if ( use_macbundle)
|
|
{
|
|
tgt->SetProperty("MACOSX_BUNDLE", "ON");
|
|
}
|
|
|
|
return true;
|
|
}
|