Skip to content

Conversation

meowtec
Copy link
Contributor

@meowtec meowtec commented Nov 22, 2023

This should fix the Error: could not load cache BUG.

If there are already generated build files in the project directory, then if you execute the command cmake path/project in $OUT_DIR/build, cmake will not generate new build files in the $OUT_DIR/build directory.

So -B . is needed. https://cmake.org/cmake/help/latest/manual/cmake.1.html#cmdoption-cmake-B

Example:

cd /path/to/project
cmake .         
# output `Build files have been written to: /path/to/project`
cd /path/to/build && cmake /path/to/project
# we expect the build files will be generated at current dir (/path/to/build)
# but unfortunately get `Build files have been written to: /path/to/project`
cd /path/to/build && cmake /path/to/project -B .  
# output `Build files have been written to: /path/to/build`, that is right!

Infomation:

cmake --version
cmake version 3.27.7

CMake suite maintained and supported by Kitware (kitware.com/cmake).

@tgross35 tgross35 added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 19, 2024
Copy link
Contributor

@tgross35 tgross35 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clear, the problem is that when you configure a probject with cmake-rs and then try to build/reconfigure via the cmake binary directly, it doesn't work?

This fix makes sense, but I think we should use an absolute path to avoid any possible problems related to the location of .. So two requested changes:

  1. Set -B right after here, so we set both the CWD and the -B flag

    cmd.arg(&self.path).current_dir(&build);

  2. A few lines up, change let build = dst.join("build"); to:

    let build_dir = dst.join("build");
    let build_dir = build_dir.canonicalize().unwrap_or_else(|| build_dir.clone);

    This is preexisting but makes sure we are avoiding relative links. (also make the var name more clear)

(sorry for the delay here, this crate doesn't have a lot of maintenance)

@tgross35
Copy link
Contributor

I wound up doing the second bit in #250, so all that's needed is for this to be updated to use build_dir rather than ..

Copy link
Contributor

@tgross35 tgross35 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@tgross35 tgross35 enabled auto-merge (squash) August 15, 2025 09:39
@tgross35 tgross35 merged commit b59be3b into rust-lang:master Aug 15, 2025
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants