Including files from one directory up with CMake or basic builders
-
I have an in-progress app I've been trying to create from a godot game demo.
Mostly I've been making great progress with this. I got a click package to build and "start" godot (with a crash), and I actually contributed a fix to the docker image for arm64 hosts so it's now easier to debug + build the game on an arm64 machine before sending it to the phone.
One thing I've been having a lot of unnecessary trouble with is keeping a reasonable directory structure and still compiling my click package. I have things arranged like this:
repository | `--- main branch directories | `--- zensekai (experimental branch directory) | `--- bin (compiled game) | `--- zensekai-click (click package)And the Makefile in
zensekaicopies/compiles all the game binaries that should be needed for either the desktop version or the click package.From reading the
clickabledocumentation I felt like I should be able to set the project root to../akazensekaiand from thezensekai-click/CMakeLists.txtfile copy in binaries frombin. But CMake seems to only want to put files inzensekai-clickinto the container for building, and I have no idea what command or "makefile" to use for the pure or custom builders much less whether they can do this, and I'm very confused. -
The solution to this was laughably simple.
all I had to do wastouch CMakeLists.txtmaking a completely empty file in thezensekaidirectory, and then CMake automatically decided to continue inzensekai-clickwith the otherCMakeLists.txt.
edit 7-13:
There was actually a little more required.in the top CMakeLists.txt I had to put
add_subdirectory(zensekai-click)and in the
zensekai-clickone I accessed/disambiguated the two directories with# set $PR_ROOT to upper directory get_filename_component(PR_ROOT "../" ABSOLUTE) # set $CLICK_DIR to zensekai-click directory set(CLICK_DIR "${PR_ROOT}/zensekai-click")another thing you might run into developing a click package that copies binaries is permissions on binaries.
I set them in the loop that copies the binaries like so:foreach(binary ${BINARIES}) install(FILES ${PR_ROOT}/bin/${binary} # the important part PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ WORLD_READ WORLD_EXECUTE # this might actually be unnecessarily permissive*. # it might be enough to just have OWNER_READ and OWNER_EXECUTE DESTINATION ${DATA_DIR} ) endforeach()(* I got sidetracked thinking the permissions weren't enough when I accidentally had my project copying the x86_64 godot binary for a bit - which had bash claiming it "wasn't permitted" to execute while it actually meant that was impossible.)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login