cmake/Source/cmFindLibraryCommand.h

75 lines
2.2 KiB
C
Raw Normal View History

2009-10-04 10:30:41 +03:00
/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
2009-10-04 10:30:41 +03:00
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
2009-10-04 10:30:41 +03:00
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#ifndef cmFindLibraryCommand_h
#define cmFindLibraryCommand_h
#include "cmFindBase.h"
/** \class cmFindLibraryCommand
* \brief Define a command to search for a library.
*
* cmFindLibraryCommand is used to define a CMake variable
* that specifies a library. The command searches for a given
* file in a list of directories.
*/
class cmFindLibraryCommand : public cmFindBase
{
public:
cmFindLibraryCommand();
/**
* This is a virtual constructor for the command.
*/
2013-03-16 19:13:01 +02:00
virtual cmCommand* Clone()
{
return new cmFindLibraryCommand;
}
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
virtual bool InitialPass(std::vector<std::string> const& args,
cmExecutionStatus &status);
/**
* This determines if the command is invoked when in script mode.
*/
2012-04-19 19:04:21 +03:00
virtual bool IsScriptable() const { return true; }
/**
* The name of the command as specified in CMakeList.txt.
*/
2015-04-27 22:25:09 +02:00
virtual std::string GetName() const {return "find_library";}
cmTypeMacro(cmFindLibraryCommand, cmFindBase);
2013-03-16 19:13:01 +02:00
protected:
void AddArchitecturePaths(const char* suffix);
2013-03-16 19:13:01 +02:00
void AddArchitecturePath(std::string const& dir,
std::string::size_type start_pos,
const char* suffix,
bool fresh = true);
std::string FindLibrary();
private:
std::string FindNormalLibrary();
2013-03-16 19:13:01 +02:00
std::string FindNormalLibraryNamesPerDir();
std::string FindNormalLibraryDirsPerName();
std::string FindFrameworkLibrary();
2013-03-16 19:13:01 +02:00
std::string FindFrameworkLibraryNamesPerDir();
std::string FindFrameworkLibraryDirsPerName();
};
#endif