[CMake] opening files relative to cmake build directory

Micha Hergarden micha.hergarden at gmail.com
Mon Jul 13 12:46:39 EDT 2015


On 07/12/2015 02:14 PM, Owen Alanzo Hogarth wrote:
> I have a little project that's setup like this
>
> project
> main.c
> build
> resources
> source
> .../module1
> .../module2
> .../etc
>
> main.c loads dynamic libs from under the source folder.
>
> I am trying to open up a file using c fopen
>
>
> I create a function to get the base resource path
> which returns: /Users/me/projectresources/
>
> I call get resource with test.txt
> it'll return a string like this: /Users/me/project/resources/test.txt
>
> but with my fopen command I get null error
> Error while opening the file.
> : No such file or directory
>
> When I use the c command to find current working directory
> it returns: 
> Current Directory = /Users/me/project/build/
>
> how can I set up cmake to allow me to either use the full file path as
> in Users/me/project/resources/[filename]
>
> or a relative filename so that I can open my files?
>
> Best,
> Owen
>
>
>
>
Hello Owen,

Take a look at: http://www.cmake.org/Wiki/CMake_Useful_Variables

In your case CMAKE_SOURCE_DIR may do what you want. You can create a
project configuration file and use #cmakedefine and CONFIGURE_FILE() to
create defines to use in your source file. That would provide you with a
fixed location, suitable for the build you are running now.

What is the purpose of the resources.txt. Is this something you need
during the creation of your executable? Or do you need it during the
execution of the program?

Regards,
Micha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150713/a01f9e60/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150713/a01f9e60/attachment.sig>


More information about the CMake mailing list