Place object files next to source files for source files in build directory - close #171
This commit is contained in:
parent
3867133e89
commit
6a8647a933
13
build_tests/simple/build_root_source_path.rb
Normal file
13
build_tests/simple/build_root_source_path.rb
Normal file
@ -0,0 +1,13 @@
|
||||
env("e", echo: :command) do |env|
|
||||
source_file = "#{env.build_root}/src/foo.c"
|
||||
FileUtils.mkdir_p(File.dirname(source_file))
|
||||
File.open(source_file, "w") do |fh|
|
||||
fh.puts(<<-EOF)
|
||||
int main()
|
||||
{
|
||||
return 29;
|
||||
}
|
||||
EOF
|
||||
end
|
||||
env.Program("foo.exe", source_file)
|
||||
end
|
||||
@ -277,7 +277,15 @@ module Rscons
|
||||
if extra_path = builder_class.extra_path
|
||||
extra_path = "/#{extra_path}"
|
||||
end
|
||||
"#{@build_root}/o#{extra_path}/#{Util.make_relative_path("#{source_fname}#{suffix}")}".gsub("\\", "/")
|
||||
source_fname = source_fname.gsub("\\", "/")
|
||||
if extra_path.nil? && source_fname.start_with?("#{@build_root}/")
|
||||
# If the source file is in the environment's build directory and no
|
||||
# builder "extra path" is present, then just place the output file
|
||||
# next to the source file.
|
||||
"#{source_fname}#{suffix}"
|
||||
else
|
||||
"#{@build_root}/o#{extra_path}/#{Util.make_relative_path("#{source_fname}#{suffix}")}"
|
||||
end
|
||||
end
|
||||
|
||||
# Build all build targets specified in the Environment.
|
||||
|
||||
@ -990,6 +990,14 @@ EOF
|
||||
verify_lines(slines, [%r{\babs.exe\b}])
|
||||
end
|
||||
|
||||
it "creates object files next to the source file for source files in the build root" do
|
||||
test_dir "simple"
|
||||
result = run_rscons(args: %w[-f build_root_source_path.rb])
|
||||
expect(result.stderr).to eq ""
|
||||
expect(File.exist?("build/e/o/build/e/src/foo.c.o")).to be_falsey
|
||||
expect(File.exist?("build/e/src/foo.c.o")).to be_truthy
|
||||
end
|
||||
|
||||
it "creates shared libraries" do
|
||||
test_dir("shared_library")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user