mmp / pbrt-v3

Source code for pbrt, the renderer described in the third edition of "Physically Based Rendering: From Theory To Implementation", by Matt Pharr, Wenzel Jakob, and Greg Humphreys.
http://pbrt.org
BSD 2-Clause "Simplified" License
4.87k stars 1.18k forks source link

Build error in os x 10.13.6 #196

Closed MichaelShen97 closed 5 years ago

MichaelShen97 commented 6 years ago

Hi, I am trying to build this program on my mac, with command

mkdir build && cd build
cmake ..
make

and came across the following error.

[ 47%] Built target IlmThread
Error copying directory from "/Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/IlmBase/Half/Release" to "/Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/OpenEXR/IlmImf/Release".
make[2]: *** [src/ext/openexr/CMakeFiles/CopyIlmBaseLibs] Error 1
make[1]: *** [src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/all] Error 2
make: *** [all] Error 2

As I explored the folder /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/IlmBase/Half/, I didn't find the folder "Release", I didn't find it in /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/OpenEXR/IlmImf/ either.

Can anybody help me fix this problem? Thanks!

mmp commented 6 years ago

Hm, strange. What happens if you run "make VERBOSE=1"? That will give a better idea of what exactly the failing step is trying to do.

MichaelShen97 commented 6 years ago

The error is,

[ 47%] Built target IlmThread
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/build.make src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/depend
cd /Users/michael/code/lib/pbrt-v3/build && /usr/local/Cellar/cmake/3.12.0/bin/cmake -E cmake_depends "Unix Makefiles" /Users/michael/code/lib/pbrt-v3 /Users/michael/code/lib/pbrt-v3/src/ext/openexr /Users/michael/code/lib/pbrt-v3/build /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/DependInfo.cmake --color=
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/build.make src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/build
cd /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr && /usr/local/Cellar/cmake/3.12.0/bin/cmake -E copy_directory /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/IlmBase/Half/Release /Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/OpenEXR/IlmImf/Release
Error copying directory from "/Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/IlmBase/Half/Release" to "/Users/michael/code/lib/pbrt-v3/build/src/ext/openexr/OpenEXR/IlmImf/Release".
make[2]: *** [src/ext/openexr/CMakeFiles/CopyIlmBaseLibs] Error 1
make[1]: *** [src/ext/openexr/CMakeFiles/CopyIlmBaseLibs.dir/all] Error 2
make: *** [all] Error 2

Actually not only me, my two colleagues in lab also met the same error. Fortunately we managed to build with Xcode later yesterday. But I am also curious what happened to make.

mmp commented 6 years ago

Hm, I'm stumped! I upgraded my mac to 10.13.6 just to be sure that was the same, did a fresh check out of pbrt-v3 from github, and did exactly what you did (cd pbrt-v3; mkdir build; cd build; cmake ..; make), and it built fine. I also looked over the cmake files but didn't see anything fishy.

So I'll leave this bug open for now. If this hits other people, hopefully someone will be able to figure out what the issue is!

MichaelShen97 commented 6 years ago

Thank you.

Anteru commented 6 years ago

I'm getting the same issue on Linux. I suspect a recent CMake changed where the files go to (I'm using CMake 3.12), in my Half folder, there is no Release subfolder. The binaries are directly in the parent folder. For me it's failing doing this:

usr/local/bin/cmake -E copy_directory /media/dev/github/pbrt-v3/build/src/ext/openexr/IlmBase/Half/Release /media/dev/github/pbrt-v3/build/src/ext/openexr/OpenEXR/IlmImf/Release

Can confirm, using https://cmake.org/files/v3.11/cmake-3.11.4-Linux-x86_64.tar.gz works, 3.12 doesn't.

mmp commented 6 years ago

I can now reproduce this with cmake 3.12.0. cmake 3.11.3 is totally fine. Digging more...

On Sat, Aug 4, 2018 at 12:42 AM, Matthäus G. Chajdas < notifications@github.com> wrote:

I'm getting the same issue on Linux. I suspect CMake changed where the files go to, in my Half folder, there is no Release subfolder. The binaries are directly in that folder. For me it's failing doing this:

usr/local/bin/cmake -E copy_directory /media//dev/github/pbrt-v3/build/src/ext/openexr/IlmBase/Half/Release /media/dev/github/pbrt-v3/build/src/ext/openexr/OpenEXR/IlmImf/Release

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/mmp/pbrt-v3/issues/196#issuecomment-410431423, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGQp5UJzS7q_-RuxxS8NF3fTzMHgryiks5uNVB4gaJpZM4VdUjL .

mmp commented 6 years ago

This is related to a bug in our OpenEXR CMakeLists.txt file and a change in cmake's behavior with copy_directory when the source directory doesn't exist.

Until the OpenEXR cmake file is fixed, a workaround is to:

  1. Sync to the latest pbrt (to pick up 86b5821).
  2. Replace src/openexr/CMakeLists.txt with this: CMakeLists.txt
LesleyLai commented 6 years ago

@mmp You mean src/exr/openexr/CMakeLists.txt

mmp commented 6 years ago

Oops, yes--that. :-)

namedtoaster commented 6 years ago

@LesleyLai @mmp isn't it src/ext/openexr/CMakeLists.txt...?

wjakob commented 5 years ago

Hi all,

I'm pretty sure that this issue was already fixed by commit https://github.com/mitsuba-renderer/openexr/commit/fe9f13eea529417adabf36319d7ce0966687cd7b. Potentially you need to run git submodule update --init --recursive to fetch the latest version of the dependency repos.

I don't think it's a good idea to just remove these offending lines -- they are needed for compilation on some platforms (Windows, I believe).

Best, Wenzel

wjakob commented 5 years ago

Ah, I get the issue now -- that commit on the mitsuba renderer branch, but not the @wjakob one. :) -- sorry about that.