mirror of
https://github.com/reactos/CMake.git
synced 2024-11-28 14:01:21 +00:00
316815e1f4
Previously the command considered non-absolute source file paths relative to the associated target on the LHS. This causes problems in incremental builds where files are added from subdirectories and forces users to workaround by manually converting to absolute paths. Change this to enable more intuitive usage by projects. Fixes #17981
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#ifndef cmTargetSourcesCommand_h
|
|
#define cmTargetSourcesCommand_h
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "cmTargetPropCommandBase.h"
|
|
|
|
class cmCommand;
|
|
class cmExecutionStatus;
|
|
class cmTarget;
|
|
|
|
class cmTargetSourcesCommand : public cmTargetPropCommandBase
|
|
{
|
|
public:
|
|
/**
|
|
* This is a virtual constructor for the command.
|
|
*/
|
|
cmCommand* Clone() override { return new cmTargetSourcesCommand; }
|
|
|
|
/**
|
|
* This is called when the command is first encountered in
|
|
* the CMakeLists.txt file.
|
|
*/
|
|
bool InitialPass(std::vector<std::string> const& args,
|
|
cmExecutionStatus& status) override;
|
|
|
|
protected:
|
|
void HandleInterfaceContent(cmTarget* tgt,
|
|
const std::vector<std::string>& content,
|
|
bool prepend, bool system) override;
|
|
|
|
private:
|
|
void HandleMissingTarget(const std::string& name) override;
|
|
|
|
bool HandleDirectContent(cmTarget* tgt,
|
|
const std::vector<std::string>& content,
|
|
bool prepend, bool system) override;
|
|
|
|
std::string Join(const std::vector<std::string>& content) override;
|
|
|
|
std::vector<std::string> ConvertToAbsoluteContent(
|
|
cmTarget* tgt, const std::vector<std::string>& content,
|
|
bool isInterfaceContent);
|
|
};
|
|
|
|
#endif
|