mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 22:37:30 +08:00
@@ -431,7 +431,7 @@ Version 1 does not exist to avoid confusion with that from
|
|||||||
|
|
||||||
{
|
{
|
||||||
"kind": "codemodel",
|
"kind": "codemodel",
|
||||||
"version": { "major": 2, "minor": 6 },
|
"version": { "major": 2, "minor": 7 },
|
||||||
"paths": {
|
"paths": {
|
||||||
"source": "/path/to/top-level-source-dir",
|
"source": "/path/to/top-level-source-dir",
|
||||||
"build": "/path/to/top-level-build-dir"
|
"build": "/path/to/top-level-build-dir"
|
||||||
@@ -998,6 +998,32 @@ with members:
|
|||||||
destination is available. The value is an unsigned integer 0-based
|
destination is available. The value is an unsigned integer 0-based
|
||||||
index into the ``backtraceGraph`` member's ``nodes`` array.
|
index into the ``backtraceGraph`` member's ``nodes`` array.
|
||||||
|
|
||||||
|
``launchers``
|
||||||
|
Optional member that is present on executable targets that have
|
||||||
|
at least one launcher specified by the project. The value is a
|
||||||
|
JSON array of entries corresponding to the specified launchers.
|
||||||
|
Each entry is a JSON object with members:
|
||||||
|
|
||||||
|
``command``
|
||||||
|
A string specifying the path to the launcher on disk, represented
|
||||||
|
with forward slashes. If the file is inside the top-level source
|
||||||
|
directory then the path is specified relative to that directory.
|
||||||
|
|
||||||
|
``arguments``
|
||||||
|
Optional member that is present when the launcher command has
|
||||||
|
arguments preceding the executable to be launched. The value
|
||||||
|
is a JSON array of strings representing the arguments.
|
||||||
|
|
||||||
|
``type``
|
||||||
|
A string specifying the type of launcher. The value is one of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
``emulator``
|
||||||
|
An emulator for the target platform when cross-compiling.
|
||||||
|
See the :prop_tgt:`CROSSCOMPILING_EMULATOR` target property.
|
||||||
|
|
||||||
|
This field was added in codemodel version 2.7.
|
||||||
|
|
||||||
``link``
|
``link``
|
||||||
Optional member that is present for executables and shared library
|
Optional member that is present for executables and shared library
|
||||||
targets that link into a runtime binary. The value is a JSON object
|
targets that link into a runtime binary. The value is a JSON object
|
||||||
|
7
Help/release/dev/fileapi-exe-launcher.rst
Normal file
7
Help/release/dev/fileapi-exe-launcher.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileapi-exe-launcher
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
|
||||||
|
been updated to 2.7.
|
||||||
|
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
|
||||||
|
a new "launchers" field.
|
@@ -727,7 +727,7 @@ std::string cmFileAPI::NoSupportedVersion(
|
|||||||
// The "codemodel" object kind.
|
// The "codemodel" object kind.
|
||||||
|
|
||||||
// Update Help/manual/cmake-file-api.7.rst when updating this constant.
|
// Update Help/manual/cmake-file-api.7.rst when updating this constant.
|
||||||
static unsigned int const CodeModelV2Minor = 6;
|
static unsigned int const CodeModelV2Minor = 7;
|
||||||
|
|
||||||
void cmFileAPI::BuildClientRequestCodeModel(
|
void cmFileAPI::BuildClientRequestCodeModel(
|
||||||
ClientRequest& r, std::vector<RequestVersion> const& versions)
|
ClientRequest& r, std::vector<RequestVersion> const& versions)
|
||||||
|
@@ -41,10 +41,12 @@
|
|||||||
#include "cmInstallSubdirectoryGenerator.h"
|
#include "cmInstallSubdirectoryGenerator.h"
|
||||||
#include "cmInstallTargetGenerator.h"
|
#include "cmInstallTargetGenerator.h"
|
||||||
#include "cmLinkLineComputer.h" // IWYU pragma: keep
|
#include "cmLinkLineComputer.h" // IWYU pragma: keep
|
||||||
|
#include "cmList.h"
|
||||||
#include "cmListFileCache.h"
|
#include "cmListFileCache.h"
|
||||||
#include "cmLocalGenerator.h"
|
#include "cmLocalGenerator.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMakefile.h"
|
||||||
#include "cmMessageType.h"
|
#include "cmMessageType.h"
|
||||||
|
#include "cmRange.h"
|
||||||
#include "cmSourceFile.h"
|
#include "cmSourceFile.h"
|
||||||
#include "cmSourceGroup.h"
|
#include "cmSourceGroup.h"
|
||||||
#include "cmState.h"
|
#include "cmState.h"
|
||||||
@@ -503,6 +505,8 @@ class Target
|
|||||||
Json::Value DumpDependencies();
|
Json::Value DumpDependencies();
|
||||||
Json::Value DumpDependency(cmTargetDepend const& td);
|
Json::Value DumpDependency(cmTargetDepend const& td);
|
||||||
Json::Value DumpFolder();
|
Json::Value DumpFolder();
|
||||||
|
Json::Value DumpLauncher(const char* name, const char* type);
|
||||||
|
Json::Value DumpLaunchers();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Target(cmGeneratorTarget* gt, std::string const& config);
|
Target(cmGeneratorTarget* gt, std::string const& config);
|
||||||
@@ -1223,6 +1227,13 @@ Json::Value Target::Dump()
|
|||||||
target["archive"] = this->DumpArchive();
|
target["archive"] = this->DumpArchive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == cmStateEnums::EXECUTABLE) {
|
||||||
|
Json::Value launchers = this->DumpLaunchers();
|
||||||
|
if (!launchers.empty()) {
|
||||||
|
target["launchers"] = std::move(launchers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Json::Value dependencies = this->DumpDependencies();
|
Json::Value dependencies = this->DumpDependencies();
|
||||||
if (!dependencies.empty()) {
|
if (!dependencies.empty()) {
|
||||||
target["dependencies"] = dependencies;
|
target["dependencies"] = dependencies;
|
||||||
@@ -2075,6 +2086,41 @@ Json::Value Target::DumpFolder()
|
|||||||
}
|
}
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Json::Value Target::DumpLauncher(const char* name, const char* type)
|
||||||
|
{
|
||||||
|
cmValue property = this->GT->GetProperty(name);
|
||||||
|
Json::Value launcher;
|
||||||
|
if (property) {
|
||||||
|
cmList commandWithArgs{ *property };
|
||||||
|
std::string command(commandWithArgs[0]);
|
||||||
|
cmSystemTools::ConvertToUnixSlashes(command);
|
||||||
|
launcher = Json::objectValue;
|
||||||
|
launcher["command"] = RelativeIfUnder(this->TopSource, command);
|
||||||
|
launcher["type"] = type;
|
||||||
|
Json::Value args;
|
||||||
|
for (std::string const& arg : cmMakeRange(commandWithArgs).advance(1)) {
|
||||||
|
args.append(arg);
|
||||||
|
}
|
||||||
|
launcher["arguments"] = args;
|
||||||
|
}
|
||||||
|
return launcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
Json::Value Target::DumpLaunchers()
|
||||||
|
{
|
||||||
|
Json::Value launchers;
|
||||||
|
bool allow =
|
||||||
|
this->GT->Makefile->GetDefinition("CMAKE_CROSSCOMPILING").IsOn();
|
||||||
|
Json::Value launcher;
|
||||||
|
if (allow) {
|
||||||
|
launcher = DumpLauncher("CROSSCOMPILING_EMULATOR", "emulator");
|
||||||
|
if (!launcher.empty()) {
|
||||||
|
launchers.append(launcher);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return launchers;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Value cmFileAPICodemodelDump(cmFileAPI& fileAPI, unsigned long version)
|
Json::Value cmFileAPICodemodelDump(cmFileAPI& fileAPI, unsigned long version)
|
||||||
|
@@ -1 +1 @@
|
|||||||
^{"debugger":(true|false),"fileApi":{"requests":\[{"kind":"codemodel","version":\[{"major":2,"minor":6}]},{"kind":"configureLog","version":\[{"major":1,"minor":0}]},{"kind":"cache","version":\[{"major":2,"minor":0}]},{"kind":"cmakeFiles","version":\[{"major":1,"minor":0}]},{"kind":"toolchains","version":\[{"major":1,"minor":0}]}]},"generators":\[.*\],"serverMode":false,"tls":(true|false),"version":{.*}}$
|
^{"debugger":(true|false),"fileApi":{"requests":\[{"kind":"codemodel","version":\[{"major":2,"minor":7}]},{"kind":"configureLog","version":\[{"major":1,"minor":0}]},{"kind":"cache","version":\[{"major":2,"minor":0}]},{"kind":"cmakeFiles","version":\[{"major":1,"minor":0}]},{"kind":"toolchains","version":\[{"major":1,"minor":0}]}]},"generators":\[.*\],"serverMode":false,"tls":(true|false),"version":{.*}}$
|
||||||
|
@@ -12,7 +12,7 @@ def read_codemodel_json_data(filename):
|
|||||||
def check_objects(o, g):
|
def check_objects(o, g):
|
||||||
assert is_list(o)
|
assert is_list(o)
|
||||||
assert len(o) == 1
|
assert len(o) == 1
|
||||||
check_index_object(o[0], "codemodel", 2, 6, check_object_codemodel(g))
|
check_index_object(o[0], "codemodel", 2, 7, check_object_codemodel(g))
|
||||||
|
|
||||||
def check_backtrace(t, b, backtrace):
|
def check_backtrace(t, b, backtrace):
|
||||||
btg = t["backtraceGraph"]
|
btg = t["backtraceGraph"]
|
||||||
@@ -405,6 +405,27 @@ def check_target(c):
|
|||||||
missing_exception=lambda e: "Install path: %s" % e["path"],
|
missing_exception=lambda e: "Install path: %s" % e["path"],
|
||||||
extra_exception=lambda a: "Install path: %s" % a["path"])
|
extra_exception=lambda a: "Install path: %s" % a["path"])
|
||||||
|
|
||||||
|
if "launchers" in expected:
|
||||||
|
if expected["launchers"] is not None:
|
||||||
|
expected_keys.append("launchers")
|
||||||
|
def check_launcher(actual, expected):
|
||||||
|
assert is_dict(actual)
|
||||||
|
launcher_keys = ["arguments", "command", "type"]
|
||||||
|
assert sorted(actual.keys()) == sorted(launcher_keys)
|
||||||
|
assert matches(actual["command"], expected["command"])
|
||||||
|
assert matches(actual["type"], expected["type"])
|
||||||
|
if expected["arguments"] is not None:
|
||||||
|
check_list_match(lambda a, e: matches(a, e),
|
||||||
|
actual["arguments"], expected["arguments"],
|
||||||
|
missing_exception=lambda e: "argument: %s" % e,
|
||||||
|
extra_exception=lambda a: "argument: %s" % actual["arguments"])
|
||||||
|
check_list_match(lambda a, e: matches(a["type"], e["type"]),
|
||||||
|
obj["launchers"], expected["launchers"],
|
||||||
|
check=check_launcher,
|
||||||
|
check_exception=lambda a, e: "launchers: %s" % a,
|
||||||
|
missing_exception=lambda e: "launchers: %s" % e,
|
||||||
|
extra_exception=lambda a: "launchers: %s" % a)
|
||||||
|
|
||||||
if expected["link"] is not None:
|
if expected["link"] is not None:
|
||||||
expected_keys.append("link")
|
expected_keys.append("link")
|
||||||
assert is_dict(obj["link"])
|
assert is_dict(obj["link"])
|
||||||
@@ -709,6 +730,7 @@ def gen_check_directories(c, g):
|
|||||||
read_codemodel_json_data("directories/alias.json"),
|
read_codemodel_json_data("directories/alias.json"),
|
||||||
read_codemodel_json_data("directories/custom.json"),
|
read_codemodel_json_data("directories/custom.json"),
|
||||||
read_codemodel_json_data("directories/cxx.json"),
|
read_codemodel_json_data("directories/cxx.json"),
|
||||||
|
read_codemodel_json_data("directories/cxx.cross.json"),
|
||||||
read_codemodel_json_data("directories/imported.json"),
|
read_codemodel_json_data("directories/imported.json"),
|
||||||
read_codemodel_json_data("directories/interface.json"),
|
read_codemodel_json_data("directories/interface.json"),
|
||||||
read_codemodel_json_data("directories/object.json"),
|
read_codemodel_json_data("directories/object.json"),
|
||||||
@@ -782,6 +804,8 @@ def gen_check_targets(c, g, inSource):
|
|||||||
read_codemodel_json_data("targets/zero_check_cxx.json"),
|
read_codemodel_json_data("targets/zero_check_cxx.json"),
|
||||||
read_codemodel_json_data("targets/cxx_lib.json"),
|
read_codemodel_json_data("targets/cxx_lib.json"),
|
||||||
read_codemodel_json_data("targets/cxx_exe.json"),
|
read_codemodel_json_data("targets/cxx_exe.json"),
|
||||||
|
read_codemodel_json_data("targets/cxx_exe_cross_emulator.json"),
|
||||||
|
read_codemodel_json_data("targets/cxx_exe_cross_emulator_args.json"),
|
||||||
read_codemodel_json_data("targets/cxx_standard_compile_feature_exe.json"),
|
read_codemodel_json_data("targets/cxx_standard_compile_feature_exe.json"),
|
||||||
read_codemodel_json_data("targets/cxx_standard_exe.json"),
|
read_codemodel_json_data("targets/cxx_standard_exe.json"),
|
||||||
read_codemodel_json_data("targets/cxx_shared_lib.json"),
|
read_codemodel_json_data("targets/cxx_shared_lib.json"),
|
||||||
|
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"source": "^cxx/cross$",
|
||||||
|
"build": "^cxx/cross$",
|
||||||
|
"parentSource": "^cxx$",
|
||||||
|
"parentIndex": 2,
|
||||||
|
"childSources": null,
|
||||||
|
"targetIds": [
|
||||||
|
"^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$",
|
||||||
|
"^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$"
|
||||||
|
],
|
||||||
|
"projectName": "Cxx",
|
||||||
|
"minimumCMakeVersion": "3.13",
|
||||||
|
"hasInstallRule": null,
|
||||||
|
"installers": []
|
||||||
|
}
|
@@ -2,7 +2,9 @@
|
|||||||
"source": "^cxx$",
|
"source": "^cxx$",
|
||||||
"build": "^cxx$",
|
"build": "^cxx$",
|
||||||
"parentSource": "^\\.$",
|
"parentSource": "^\\.$",
|
||||||
"childSources": null,
|
"childSources": [
|
||||||
|
"^cxx/cross$"
|
||||||
|
],
|
||||||
"targetIds": [
|
"targetIds": [
|
||||||
"^ALL_BUILD::@a56b12a3f5c0529fb296$",
|
"^ALL_BUILD::@a56b12a3f5c0529fb296$",
|
||||||
"^ZERO_CHECK::@a56b12a3f5c0529fb296$",
|
"^ZERO_CHECK::@a56b12a3f5c0529fb296$",
|
||||||
|
@@ -3,13 +3,16 @@
|
|||||||
"parentName": "codemodel-v2",
|
"parentName": "codemodel-v2",
|
||||||
"childNames": null,
|
"childNames": null,
|
||||||
"directorySources": [
|
"directorySources": [
|
||||||
"^cxx$"
|
"^cxx$",
|
||||||
|
"^cxx/cross$"
|
||||||
],
|
],
|
||||||
"targetIds": [
|
"targetIds": [
|
||||||
"^ALL_BUILD::@a56b12a3f5c0529fb296$",
|
"^ALL_BUILD::@a56b12a3f5c0529fb296$",
|
||||||
"^ZERO_CHECK::@a56b12a3f5c0529fb296$",
|
"^ZERO_CHECK::@a56b12a3f5c0529fb296$",
|
||||||
"^cxx_lib::@a56b12a3f5c0529fb296$",
|
"^cxx_lib::@a56b12a3f5c0529fb296$",
|
||||||
"^cxx_exe::@a56b12a3f5c0529fb296$",
|
"^cxx_exe::@a56b12a3f5c0529fb296$",
|
||||||
|
"^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$",
|
||||||
|
"^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$",
|
||||||
"^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$",
|
"^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$",
|
||||||
"^cxx_standard_exe::@a56b12a3f5c0529fb296$",
|
"^cxx_standard_exe::@a56b12a3f5c0529fb296$",
|
||||||
"^cxx_shared_lib::@a56b12a3f5c0529fb296$",
|
"^cxx_shared_lib::@a56b12a3f5c0529fb296$",
|
||||||
|
@@ -82,6 +82,14 @@
|
|||||||
"id": "^cxx_exe::@a56b12a3f5c0529fb296$",
|
"id": "^cxx_exe::@a56b12a3f5c0529fb296$",
|
||||||
"backtrace": null
|
"backtrace": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$",
|
||||||
|
"backtrace": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$",
|
||||||
|
"backtrace": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$",
|
"id": "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$",
|
||||||
"backtrace": null
|
"backtrace": null
|
||||||
|
@@ -122,6 +122,14 @@
|
|||||||
"id": "^cxx_exe::@a56b12a3f5c0529fb296$",
|
"id": "^cxx_exe::@a56b12a3f5c0529fb296$",
|
||||||
"backtrace": null
|
"backtrace": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$",
|
||||||
|
"backtrace": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$",
|
||||||
|
"backtrace": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$",
|
"id": "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$",
|
||||||
"backtrace": null
|
"backtrace": null
|
||||||
|
@@ -0,0 +1,106 @@
|
|||||||
|
{
|
||||||
|
"name": "cxx_exe_cross_emulator",
|
||||||
|
"id": "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$",
|
||||||
|
"directorySource": "^cxx/cross$",
|
||||||
|
"projectName": "Cxx",
|
||||||
|
"type": "EXECUTABLE",
|
||||||
|
"isGeneratorProvided": null,
|
||||||
|
"fileSets": null,
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"path": "^empty\\.cxx$",
|
||||||
|
"isGenerated": null,
|
||||||
|
"fileSetName": null,
|
||||||
|
"sourceGroupName": "Source Files",
|
||||||
|
"compileGroupLanguage": "CXX",
|
||||||
|
"backtrace": [
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": 3,
|
||||||
|
"command": "add_executable",
|
||||||
|
"hasParent": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": null,
|
||||||
|
"command": null,
|
||||||
|
"hasParent": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceGroups": [
|
||||||
|
{
|
||||||
|
"name": "Source Files",
|
||||||
|
"sourcePaths": [
|
||||||
|
"^empty\\.cxx$"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compileGroups": [
|
||||||
|
{
|
||||||
|
"language": "CXX",
|
||||||
|
"sourcePaths": [
|
||||||
|
"^empty\\.cxx$"
|
||||||
|
],
|
||||||
|
"includes": null,
|
||||||
|
"frameworks": null,
|
||||||
|
"defines": null,
|
||||||
|
"compileCommandFragments": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"backtrace": [
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": 3,
|
||||||
|
"command": "add_executable",
|
||||||
|
"hasParent": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": null,
|
||||||
|
"command": null,
|
||||||
|
"hasParent": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folder": null,
|
||||||
|
"nameOnDisk": "^cxx_exe_cross_emulator(\\.exe)?$",
|
||||||
|
"artifacts": [
|
||||||
|
{
|
||||||
|
"path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator(\\.exe)?$",
|
||||||
|
"_dllExtra": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator\\.pdb$",
|
||||||
|
"_dllExtra": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"build": "^cxx/cross$",
|
||||||
|
"source": "^cxx/cross$",
|
||||||
|
"install": null,
|
||||||
|
"launchers" : [
|
||||||
|
{
|
||||||
|
"arguments" : null,
|
||||||
|
"command": "^no-such-emulator(\\.exe)?$",
|
||||||
|
"type" : "emulator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"link": {
|
||||||
|
"language": "CXX",
|
||||||
|
"lto": null,
|
||||||
|
"commandFragments": [
|
||||||
|
{
|
||||||
|
"fragment" : ".*",
|
||||||
|
"role" : "flags",
|
||||||
|
"backtrace": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"archive": null,
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"id": "^ZERO_CHECK::@6890427a1f51a3e7e1df$",
|
||||||
|
"backtrace": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"name": "cxx_exe_cross_emulator_args",
|
||||||
|
"id": "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$",
|
||||||
|
"directorySource": "^cxx/cross$",
|
||||||
|
"projectName": "Cxx",
|
||||||
|
"type": "EXECUTABLE",
|
||||||
|
"isGeneratorProvided": null,
|
||||||
|
"fileSets": null,
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"path": "^empty\\.cxx$",
|
||||||
|
"isGenerated": null,
|
||||||
|
"fileSetName": null,
|
||||||
|
"sourceGroupName": "Source Files",
|
||||||
|
"compileGroupLanguage": "CXX",
|
||||||
|
"backtrace": [
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": 6,
|
||||||
|
"command": "add_executable",
|
||||||
|
"hasParent": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": null,
|
||||||
|
"command": null,
|
||||||
|
"hasParent": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceGroups": [
|
||||||
|
{
|
||||||
|
"name": "Source Files",
|
||||||
|
"sourcePaths": [
|
||||||
|
"^empty\\.cxx$"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compileGroups": [
|
||||||
|
{
|
||||||
|
"language": "CXX",
|
||||||
|
"sourcePaths": [
|
||||||
|
"^empty\\.cxx$"
|
||||||
|
],
|
||||||
|
"includes": null,
|
||||||
|
"frameworks": null,
|
||||||
|
"defines": null,
|
||||||
|
"compileCommandFragments": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"backtrace": [
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": 6,
|
||||||
|
"command": "add_executable",
|
||||||
|
"hasParent": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "^cxx/cross/CMakeLists\\.txt$",
|
||||||
|
"line": null,
|
||||||
|
"command": null,
|
||||||
|
"hasParent": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folder": null,
|
||||||
|
"nameOnDisk": "^cxx_exe_cross_emulator_args(\\.exe)?$",
|
||||||
|
"artifacts": [
|
||||||
|
{
|
||||||
|
"path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator_args(\\.exe)?$",
|
||||||
|
"_dllExtra": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator_args\\.pdb$",
|
||||||
|
"_dllExtra": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"build": "^cxx/cross$",
|
||||||
|
"source": "^cxx/cross$",
|
||||||
|
"install": null,
|
||||||
|
"launchers" : [
|
||||||
|
{
|
||||||
|
"arguments" : [
|
||||||
|
"arg1",
|
||||||
|
"arg2 with space"
|
||||||
|
],
|
||||||
|
"command": "^no-such-emulator(\\.exe)?$",
|
||||||
|
"type" : "emulator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"link": {
|
||||||
|
"language": "CXX",
|
||||||
|
"lto": null,
|
||||||
|
"commandFragments": [
|
||||||
|
{
|
||||||
|
"fragment" : ".*",
|
||||||
|
"role" : "flags",
|
||||||
|
"backtrace": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"archive": null,
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"id": "^ZERO_CHECK::@6890427a1f51a3e7e1df$",
|
||||||
|
"backtrace": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@@ -45,3 +45,5 @@ if(_rdeps)
|
|||||||
FRAMEWORK DESTINATION fw
|
FRAMEWORK DESTINATION fw
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(cross)
|
||||||
|
7
Tests/RunCMake/FileAPI/cxx/cross/CMakeLists.txt
Normal file
7
Tests/RunCMake/FileAPI/cxx/cross/CMakeLists.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Cross-compiling is normally global. Cover it without duplicating everything.
|
||||||
|
set(CMAKE_CROSSCOMPILING 1)
|
||||||
|
add_executable(cxx_exe_cross_emulator ../../empty.cxx)
|
||||||
|
set_property(TARGET cxx_exe_cross_emulator PROPERTY CROSSCOMPILING_EMULATOR no-such-emulator)
|
||||||
|
|
||||||
|
add_executable(cxx_exe_cross_emulator_args ../../empty.cxx)
|
||||||
|
set_property(TARGET cxx_exe_cross_emulator_args PROPERTY CROSSCOMPILING_EMULATOR "no-such-emulator;arg1;arg2 with space")
|
Reference in New Issue
Block a user