On 21/04/2011 11:38 a.m., Michael Hertling wrote:
On 04/20/2011 11:56 PM, Gib Bogle wrote:
Quoting Michael Hertling<[email protected]>:

On 04/20/2011 05:40 AM, Fraser Hutchison wrote:
Hi Gib,

Try the following:

GET_TARGET_PROPERTY(FUBAR_EXE fubar LOCATION)
ADD_CUSTOM_COMMAND(TARGET fubar POST_BUILD COMMAND ${CMAKE_COMMAND} -E
copy ${FUBAR_EXE} somepath)

Cheers,

Fraser.

Don't use the obsolete LOCATION property since it might have subtle
side effects, see [1]. Instead, use the new "generator expressions"

ADD_CUSTOM_COMMAND(TARGET fubar POST_BUILD
     COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:fubar>  somepath)

or follow the advice Michael W. has provided in the meantime.

Regards,

Michael H.

Hi Michael,

I wonder if something went amiss in your post.
This command:

ADD_CUSTOM_COMMAND(TARGET threshold POST_BUILD COMMAND
${CMAKE_COMMAND} -E copy $<TARGET_FILE:threshold>  ../bin)

gives an error:

C:\Users\Gib\LN_structure\code\threshold>make
Linking CXX executable threshold.exe
Creating library file: libthreshold.dll.a
Access is denied.
mingw32-make[2]: *** [threshold.exe] Error 1
mingw32-make[1]: *** [CMakeFiles/threshold.dir/all] Error 2
mingw32-make: *** [all] Error 2

while this one works OK:

ADD_CUSTOM_COMMAND(TARGET threshold POST_BUILD COMMAND
${CMAKE_COMMAND} -E copy threshold.exe ../bin)

Any ideas?

Gib

Which version of CMake do you use? IIRC, the generator expressions for
custom commands have been added quite recently in 2.8.4. Moreover, if
the directory "../bin" doesn't exist at the time the custom command
is run, the executable will be copied to a file named "bin" in the
directory "..", so you need to ensure the directory "../bin" does
exist, cf. FILE(MAKE_DIRECTORY ...) or "cmake -E make_directory".
Besides, don't use the ".." path in that way; use variables like
CMAKE_BINARY_DIR instead, i.e. ${CMAKE_BINARY_DIR}/../bin, e.g.

If the issue still persists, could you check whether the following
CMakeLists.txt file also fails on your system? It works on mine:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.4 FATAL_ERROR)
PROJECT(GENEXP C)
SET(CMAKE_VERBOSE_MAKEFILE ON)
FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
FILE(WRITE ${CMAKE_BINARY_DIR}/main.c "int main(void){return 0;}\n")
ADD_EXECUTABLE(main main.c)
ADD_CUSTOM_COMMAND(TARGET main POST_BUILD COMMAND
${CMAKE_COMMAND} -E copy $<TARGET_FILE:main>  ${CMAKE_BINARY_DIR}/bin)

If it fails, please post [C]Make's output for further investigation.

Regards,

Michael

PS: Always reply to the ML, so others may benefit from the discussion.

I'm using cmake 2.8.2, which presumably explains the failure. The directory ../bin exists (otherwise the other form of the command would have failed).

Cheers
Gib
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to