我有以下文件结构:
src/
lib.rs
foo.rs
build.rs
Run Code Online (Sandbox Code Playgroud)
我想将一些东西从foo.rs(已经lib.rs有pub mod foo)导入到build.rs. (我正在尝试导入类型以便在构建时生成一些 JSON 模式)
这可能吗?
我对 Rust 和 Cargo 很陌生,我正在尝试做一些非常简单的事情!
我有这样的东西(在 build.rs 中):
use std::process::Command;
fn main() {
Command::new("echo 123");
}
Run Code Online (Sandbox Code Playgroud)
我想查看命令的输出echo 123。我想123打印到构建输出(这主要是为了调试我正在做的事情)并且不会成为最终项目的一部分。
我已经尝试过cargo build --verbose-这不起作用。
我无法从那里的帖子中推断出答案(以及其他一些喜欢的帖子):
我觉得这一定很简单 - 但我已经在网上搜索了几个小时但没有找到答案。
在我们的开发者环境中,没有用户拥有管理权限.因此,如果不让管理员这样做,就无法安装MSBuild.CommunityTasks.
我想知道的是类似于NAnt,即是否可以将文件包含在解决方案目录中,并从那里引用它?这样,无论是否安装了这个人,当他们检查最新代码时,msbuild社区文件都会随附,并且解决方案将会构建.
\SolutionDir\{solution}.sln
\SolutionDir\Project\{files}
\SolutionDir\MSBuild.Community\files
Run Code Online (Sandbox Code Playgroud) 运行后ant clean,我的项目仍然需要在Eclipse中"清理",然后才能ant release成功运行.
如果我尝试在预定义的构建脚本的组件中失败ant release后立即运行ant clean-compile
相反,如果我运行Eclipse版本清理所有项目,那么我运行ant release的-compile组件不会失败.
为什么是这样?为什么ant clean清洁效果不如Eclipse那么干净?我该怎么做才能解决这个问题?
我在多个目录中有很多Visual Studio项目解决方案(所有扩展名都是.sln),我想编写一个简单的批处理脚本,它将自动构建批处理文件中列出的所有解决方案.
我可以通过启动Visual Studio Command Prompt(这只是一个执行了以下命令的命令行实例)来手动构建解决方案
"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
之后我通过调用以下方式构建项目:
devenv "path\to\solutionFile\projectSolution1.sln" /build Debug
这将构建项目(假设项目没有错误),我为我想要构建的每个项目进行冲洗和重复.
但是当我在一个名为的批处理文件中有以下内容时build.bat:
"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
echo "Starting Build for all Projects with proposed changes"
echo .
devenv "path\to\solutionFile\projectSolution2.sln" /build Debug
devenv "another\path\to\solutionFile\projectSolution3.sln" /build Debug
devenv "yet\another\path\to\solutionFile\projectSolution4.sln" /build Debug
echo "All builds completed."
pause
Run Code Online (Sandbox Code Playgroud)
批处理脚本只执行第一行,并等到我输入exit其他行之前输入.基于我对批处理文件和所有StackOverflow问题所做的研究,我对此的理解是,cmd实际上调用了自己的另一个实例,vcvarsall.bat用于设置构建环境.
这不起作用,因为键入exit该devenv设置的实例并且之后的命令无法执行,因为devenv它不是可识别的命令(因为导出的路径将不再存在)
简而言之 …
参考:https : //gitlab.ida.liu.se/help/ci/ssh_keys/README.md
以下脚本有问题。即使我将最后一个符号从'更改为',问题仍然是如何解决该错误,如下所示:
$ ssh-add <(echo“ $ SSH_PRIVATE_KEY”)/ bin / sh:eval:第24行:语法错误:意外的“(”
before_script:
# Install ssh-agent if not already installed, it is required by Docker.
# (change apt-get to yum if you use a CentOS-based image)
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
# Run ssh-agent (inside the build environment)
- eval $(ssh-agent -s)
# Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
- ssh-add <(echo …Run Code Online (Sandbox Code Playgroud) 我在我的构建脚本中使用 npm 包“copyfiles”。但是目标目录不是我所期望的。
"copy-template": "copyfiles \"./src/**/*.html\" \"dist\"",
Run Code Online (Sandbox Code Playgroud)
我的基本目录结构是:
src/pages/.../htmlfiles
Run Code Online (Sandbox Code Playgroud)
我想要的是:
dist/pages/.../htmlfiles
Run Code Online (Sandbox Code Playgroud)
所以和以前没有“src”的结构一样,现在我的 dist 文件夹中总是有 src 目录。
dist/src/pages/../htmlfiles
Run Code Online (Sandbox Code Playgroud)
也许你对我有一些提示?
最佳大卫
我正在尝试执行与如何在编译时创建静态字符串几乎相同的操作。
use std::{env};
use std::path::Path;
use std::io::{Write, BufWriter};
use std::fs::File;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("file_path.txt");
let mut f = BufWriter::new(File::create(&dest_path).unwrap());
let long_string = dest_path.display();
write!(f, "{}", long_string).unwrap();
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
static LONG_STRING: &'static str = include_str!("file_path.txt");
println!("{}", LONG_STRING);
}
Run Code Online (Sandbox Code Playgroud)
当cargo build我收到错误时:
use std::{env};
use std::path::Path;
use std::io::{Write, BufWriter};
use std::fs::File;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("file_path.txt");
let mut f = …Run Code Online (Sandbox Code Playgroud) 有人可以向我解释一下 build.gradle 文件中“buildscript”中列出的依赖项与依赖项块 { } 中列出的常规依赖项有何不同吗?为什么它们必须用语法“实现”列出?我用谷歌搜索了这个,回复说构建脚本中的依赖项并用于“构建项目”,但我不明白这一点?谁能给出更清晰的图片和答案?
构建脚本:
buildscript
{
repositories
{
maven {
url 'myMavenFeed'
credentials {
username "myUsername"
password myPassword
}
}
mavenCentral()
jcenter()
}
dependencies
{
classpath "com.microsoft.azure.sdk.iot:iot-device-client:1.14.1"
}
}
Run Code Online (Sandbox Code Playgroud)
依赖块:
dependencies
{
compile group: 'com.microsoft.azure.sdk.iot', name: 'iot-device-client', version: '1.16.0'
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个build.rs脚本来创建一个最新的脚本,该脚本将HashMapMAC 地址的前 6 个字符与其对应的供应商进行映射。
它有 29231 个键值对,这导致cargo check在我的源代码上花费超过 7 分钟。在此之前,不到20秒。它还使用了我笔记本电脑上可用的所有8GB RAM,我无法在这 7-8 分钟内使用它。
我认为这是一个rustc/cargo错误,或者我做错了什么,我很确定是后者。生成这样的代码的正确方法是什么?
主文件
use std::collections::{HashMap, HashSet};
use rustc_hash::{FxHashMap, FxHashSet, FxHasher};
type CustomHasher = BuildHasherDefault<FxHasher>;
include!(concat!(env!("OUT_DIR"), "/map_oui.rs"));
Run Code Online (Sandbox Code Playgroud)
map_oui.rs
#[rustfmt::skip]
lazy_static! {
static ref MAP_MACS: FxHashMap<&'static [u8; 6], &'static str> = {
let mut map_macs = HashMap::with_capacity_and_hasher(29231, CustomHasher::default());
map_macs.insert(b"002272", "American Micro-Fuel Device Corp.");
map_macs.insert(b"00D0EF", "IGT");
//...
Run Code Online (Sandbox Code Playgroud)
构建.rs
use std::env;
use std::fs::File;
use std::io::prelude::*;
use std::io::{BufReader, BufWriter};
use std::path::Path; …Run Code Online (Sandbox Code Playgroud) code-generation build-script embedded-resource rust rust-cargo
build-script ×10
rust ×4
rust-cargo ×4
android ×1
ant ×1
batch-file ×1
build ×1
classpath ×1
cmd ×1
command ×1
dependencies ×1
docker ×1
eclipse ×1
git ×1
gitlab ×1
gitlab-ci ×1
gradle ×1
msbuild ×1
node.js ×1
npm ×1
package.json ×1