[CMake] Using Eclipse CDT, CMake resets Eclipse project configuration frequently
Michael Jackson
mike.jackson at bluequartz.net
Fri Jan 30 08:54:10 EST 2009
I use the following to copy some test files from one directory to
another:
SET (HDF5_REFERENCE_TEST_FILES
tnullspace.h5
family_v1.7_00003.h5
family_v1.7_00001.h5
mergemsg.h5
tbogus.h5
tbad_msg_count.h5
group_new.h5
deflate.h5
noencoder.h5
family_v1.7_00000.h5
le_extlink1.h5
tmtimeo.h5
tmtimen.h5
fill_old.h5
tlayouto.h5
family_v1.7_00002.h5
th5s.h5
tarrold.h5
)
FOREACH ( h5_file ${HDF5_REFERENCE_TEST_FILES} )
SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
MESSAGE(STATUS " Copying ${dest}")
ADD_CUSTOM_COMMAND (
TARGET ${HDF5_TEST_LIB_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${HDF5_TEST_DIR}/${h5_file} $
{dest}
)
ENDFOREACH ( h5_file ${HDF5_REFERENCE_TEST_FILES} )
Unfortunately it runs every time cmake is run but is still pretty
quick since after the first time it doesn't really copy anything.
_________________________________________________________
Mike Jackson mike.jackson at bluequartz.net
BlueQuartz Software www.bluequartz.net
Principal Software Engineer Dayton, Ohio
On Jan 30, 2009, at 8:00 AM, Jonatan Bijl wrote:
>>> I have created an out-of-source build tree (on Windows), with the
>>> installation directory as a subfolder of the build trees. The idea
>>> is
>>> that the compiled binary requires some DLL's, images, 3D models and
>>> configuration files, at a location relative to the executable. If
>>> the
>>> files are changed, they will be copied from the source tree to the
>>> installation tree again. Therefore, I need to run "make install all"
>>> before running the executable. Because of the executable's
>>> dependency on
>>> the other files, I always want to build and install. (I don't expect
> a
>>> built file to work in itself because it won't be able to find the
>>> required files)
>>
>>
>> In such a situation I usually try to "configure_file" things into the
>> build tree such that I can run the executable from the build tree.
>> Also setting EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH for this
>> purpose is very useful. If I need to configure some files differently
>> for the build and install tree, I configure them twice into separate
>> directories (the latter e.g. under ${CMAKE_BINARY_DIR}/InstallFiles).
>> This way I can have different versions of the configured files for
>> the
>
>> build and install tree.
>>
>
> I have now set up the tree so that the executables can be run
> immediately from where they are created. I use configure_file to copy
> the files. The problem is now, that every time I do a re-configure,
> the
> files (including a dll that is very big) are copied. Is there a way of
> making sure the files are copied *only* when they are renewed? (and
> also
> making sure they are removed when the original is removed?)
>
> Here is my layout of the project:
> My setup is as follows:
>
> Src //the root of the cmake project
> +- Bin
> | Main.cxx
> + Lib
> | All other cxx and h files I made
> +- Data
> | Required files (3d models, images, etc.)
> +- Cfg
> Required config files
> Debug //all contents over here is generated by cmake-gui ../src and
> make
> +- Bin
> | Main.exe
> | DLLs of 3rd party library
> +- Lib
> | Compiled libXXX.a files
> +- Data
> | Required files (3d models, images, etc.)
> +- Cfg
> Required config files
> Thirdparty //this directory provides the 3rd party libraries we
> link
> | // against or include
> +- Cxxtest
> +- OgreSDK
> +- Bin
> | +- Debug
> | | All the DLL's
> | +- Release
> | All the DLL's
> +- Lib
> Include
> ....
>
> -------------------------------------------------------------
> This e-mail is intended exclusively for the addressee. If you
> are not the addressee you must not read, copy, use or
> disclose the e-mail nor the content; please notify us
> immediately [by clicking 'Reply'] and delete this e-mail.
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
More information about the CMake
mailing list