Re: [CMake] Where are tests located?
On Thu, Nov 10, 2011 at 4:41 PM, EXT-York, Gantry wrote: > If I'm in a traversed subdirectory, is there a different variable other than > ${CMAKE_CURRENT_SOURCE_DIR} that I should be using? > > This doesn't seem to work. > > > Gantry York > Chandler, Arizona > > > > > -Original Message- > From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On Behalf Of > EXT-York, Gantry > Sent: Thursday, November 10, 2011 2:34 PM > To: David Cole > Cc: cmake@cmake.org > Subject: Re: [CMake] Where are tests located? > > OK, so if I'm trying to add a test do I just > > add_executable( run_main.pl IMPORTED ) > set_property( > TARGET test_script1 > PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl" > ) > add_test( test1 run_main.pl) > > > If run_main.pl is > > #!/usr/bin/perl > system "main --val 24" > > > Main could be in the build tree if it comes from main.cxx or it could be in > the source tree if it is a script. How does cmake know where main is at? > > > -Original Message----- > From: David Cole [mailto:david.c...@kitware.com] > Sent: Thursday, November 10, 2011 1:09 PM > To: EXT-York, Gantry > Cc: cmake@cmake.org > Subject: Re: [CMake] Where are tests located? > > When you add an IMPORTED target, CMake does not know where the > imported target is AT ALL until you tell it. > > After: > add_executable(run_main.pl IMPORTED) > > You need: > set_property(TARGET run_main.pl PROPERTY IMPORTED_LOCATION > "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl") > > See docs here: > http://cmake.org/cmake/help/cmake-2-8-docs.html#command:set_property > http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:IMPORTED_LOCATION > > > HTH, > David > > > On Thu, Nov 10, 2011 at 3:00 PM, EXT-York, Gantry > wrote: >> When I do an >> >> >> >> add_executable( run_main.pl IMPORTED) >> >> add_test( test1 run_main.pl) >> >> >> >> How does it know where run_main.pl is located when you do an out of source >> build? >> >> >> >> It seems to look in >> >> . >> >> Releases >> >> Debug >> >> MinSizeRel >> >> RelWithDebInfo >> >> Deployment >> >> Development >> >> >> >> which are directories that I don't even see existing. >> >> >> >> And if run_main.pl is just >> >> >> >> #!/usr/bin/perl >> >> system " ../exec/main" >> >> >> >> >> >> How does it know if ../exec/main is in the src tree or the build tree? If >> main is a C binary, it would be in the build tree, if it is just a script it >> would be in the source tree. >> >> >> >> >> >> >> >> >> >> Gantry York >> >> Chandler, Arizona >> >> >> >> -- >> >> 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 >> > -- > > 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 > CMAKE_SOURCE_DIR is the value of the top level source tree that you give to cmake (or cmake-gui, or ccmake) when you configure a build tree. CMAKE_CURRENT_SOURCE_DIR starts out as CMAKE_SOURCE_DIR in the top level CMakeLists.txt file, and then changes value as subdirectories are traversed via add_subdirectory. HTH, David -- 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
Re: [CMake] Where are tests located?
On Thu, Nov 10, 2011 at 4:33 PM, EXT-York, Gantry wrote: > OK, so if I'm trying to add a test do I just > > add_executable( run_main.pl IMPORTED ) > set_property( > TARGET test_script1 > PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl" > ) > add_test( test1 run_main.pl) > > > If run_main.pl is > > #!/usr/bin/perl > system "main --val 24" > > > Main could be in the build tree if it comes from main.cxx or it could be in > the source tree if it is a script. How does cmake know where main is at? > > > -Original Message- > From: David Cole [mailto:david.c...@kitware.com] > Sent: Thursday, November 10, 2011 1:09 PM > To: EXT-York, Gantry > Cc: cmake@cmake.org > Subject: Re: [CMake] Where are tests located? > > When you add an IMPORTED target, CMake does not know where the > imported target is AT ALL until you tell it. > > After: > add_executable(run_main.pl IMPORTED) > > You need: > set_property(TARGET run_main.pl PROPERTY IMPORTED_LOCATION > "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl") > > See docs here: > http://cmake.org/cmake/help/cmake-2-8-docs.html#command:set_property > http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:IMPORTED_LOCATION > > > HTH, > David > > > On Thu, Nov 10, 2011 at 3:00 PM, EXT-York, Gantry > wrote: >> When I do an >> >> >> >> add_executable( run_main.pl IMPORTED) >> >> add_test( test1 run_main.pl) >> >> >> >> How does it know where run_main.pl is located when you do an out of source >> build? >> >> >> >> It seems to look in >> >> . >> >> Releases >> >> Debug >> >> MinSizeRel >> >> RelWithDebInfo >> >> Deployment >> >> Development >> >> >> >> which are directories that I don't even see existing. >> >> >> >> And if run_main.pl is just >> >> >> >> #!/usr/bin/perl >> >> system " ../exec/main" >> >> >> >> >> >> How does it know if ../exec/main is in the src tree or the build tree? If >> main is a C binary, it would be in the build tree, if it is just a script it >> would be in the source tree. >> >> >> >> >> >> >> >> >> >> Gantry York >> >> Chandler, Arizona >> >> >> >> -- >> >> 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 >> > If I were running a perl script as a test, here's how I would write the CMakeLists.txt file: cmake_minimum_required(VERSION 2.8) project(perl_test) include(CTest) find_package(Perl) message("PERL_EXECUTABLE='${PERL_EXECUTABLE}'") add_test(NAME test1 COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl) By default the working directory will be in CMAKE_CURRENT_BINARY_DIR when the test runs. You can control it on a per-test basis by adding the WORKING_DIRECTORY keyword to the add_test command if you know in the CMakeLists file which test has main in the source tree and which test has main.exe in the binary tree. Something like this: add_test(NAME test_of_script COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) add_test(NAME test_of_exe COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) However, CMake has no idea where "main" is, and for that matter, neither does perl unless you tell it. I would recommend structuring the perl script so that it takes in a directory argument of where to look for the "main" script or executable. Then you could use an expression like this to pass it along to the perl script: add_test(NAME test_passing_dir COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl --dir $ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) Of course, use the actual target name for the target that produces "main" in that last example, not the actual string "main". CMake enforces name uniqueness among all targets in the whole tree. Hopefully, this sheds a little more light on things for you. HTH, David -- 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
Re: [CMake] Where are tests located?
If I'm in a traversed subdirectory, is there a different variable other than ${CMAKE_CURRENT_SOURCE_DIR} that I should be using? This doesn't seem to work. Gantry York Chandler, Arizona -Original Message- From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On Behalf Of EXT-York, Gantry Sent: Thursday, November 10, 2011 2:34 PM To: David Cole Cc: cmake@cmake.org Subject: Re: [CMake] Where are tests located? OK, so if I'm trying to add a test do I just add_executable( run_main.pl IMPORTED ) set_property( TARGET test_script1 PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl" ) add_test( test1 run_main.pl) If run_main.pl is #!/usr/bin/perl system "main --val 24" Main could be in the build tree if it comes from main.cxx or it could be in the source tree if it is a script. How does cmake know where main is at? -Original Message- From: David Cole [mailto:david.c...@kitware.com] Sent: Thursday, November 10, 2011 1:09 PM To: EXT-York, Gantry Cc: cmake@cmake.org Subject: Re: [CMake] Where are tests located? When you add an IMPORTED target, CMake does not know where the imported target is AT ALL until you tell it. After: add_executable(run_main.pl IMPORTED) You need: set_property(TARGET run_main.pl PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl") See docs here: http://cmake.org/cmake/help/cmake-2-8-docs.html#command:set_property http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:IMPORTED_LOCATION HTH, David On Thu, Nov 10, 2011 at 3:00 PM, EXT-York, Gantry wrote: > When I do an > > > > add_executable( run_main.pl IMPORTED) > > add_test( test1 run_main.pl) > > > > How does it know where run_main.pl is located when you do an out of source > build? > > > > It seems to look in > > . > > Releases > > Debug > > MinSizeRel > > RelWithDebInfo > > Deployment > > Development > > > > which are directories that I don't even see existing. > > > > And if run_main.pl is just > > > > #!/usr/bin/perl > > system " ../exec/main" > > > > > > How does it know if ../exec/main is in the src tree or the build tree? If > main is a C binary, it would be in the build tree, if it is just a script it > would be in the source tree. > > > > > > > > > > Gantry York > > Chandler, Arizona > > > > -- > > 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 > -- 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 -- 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
Re: [CMake] Where are tests located?
OK, so if I'm trying to add a test do I just add_executable( run_main.pl IMPORTED ) set_property( TARGET test_script1 PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl" ) add_test( test1 run_main.pl) If run_main.pl is #!/usr/bin/perl system "main --val 24" Main could be in the build tree if it comes from main.cxx or it could be in the source tree if it is a script. How does cmake know where main is at? -Original Message- From: David Cole [mailto:david.c...@kitware.com] Sent: Thursday, November 10, 2011 1:09 PM To: EXT-York, Gantry Cc: cmake@cmake.org Subject: Re: [CMake] Where are tests located? When you add an IMPORTED target, CMake does not know where the imported target is AT ALL until you tell it. After: add_executable(run_main.pl IMPORTED) You need: set_property(TARGET run_main.pl PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl") See docs here: http://cmake.org/cmake/help/cmake-2-8-docs.html#command:set_property http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:IMPORTED_LOCATION HTH, David On Thu, Nov 10, 2011 at 3:00 PM, EXT-York, Gantry wrote: > When I do an > > > > add_executable( run_main.pl IMPORTED) > > add_test( test1 run_main.pl) > > > > How does it know where run_main.pl is located when you do an out of source > build? > > > > It seems to look in > > . > > Releases > > Debug > > MinSizeRel > > RelWithDebInfo > > Deployment > > Development > > > > which are directories that I don't even see existing. > > > > And if run_main.pl is just > > > > #!/usr/bin/perl > > system " ../exec/main" > > > > > > How does it know if ../exec/main is in the src tree or the build tree? If > main is a C binary, it would be in the build tree, if it is just a script it > would be in the source tree. > > > > > > > > > > Gantry York > > Chandler, Arizona > > > > -- > > 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 > -- 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
Re: [CMake] Where are tests located?
add_test seems to work if you are adding an executable that is built, but if it is just a script that is imported, the cmake system is comfused as to where it is located and the script its doesn't know where the executable is. Gantry York Chandler, Arizona From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On Behalf Of EXT-York, Gantry Sent: Thursday, November 10, 2011 1:01 PM To: cmake@cmake.org Subject: [CMake] Where are tests located? When I do an add_executable( run_main.pl IMPORTED) add_test( test1 run_main.pl) How does it know where run_main.pl is located when you do an out of source build? It seems to look in . Releases Debug MinSizeRel RelWithDebInfo Deployment Development which are directories that I don't even see existing. And if run_main.pl is just #!/usr/bin/perl system " ../exec/main" How does it know if ../exec/main is in the src tree or the build tree? If main is a C binary, it would be in the build tree, if it is just a script it would be in the source tree. Gantry York Chandler, Arizona -- 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
Re: [CMake] Where are tests located?
When you add an IMPORTED target, CMake does not know where the imported target is AT ALL until you tell it. After: add_executable(run_main.pl IMPORTED) You need: set_property(TARGET run_main.pl PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/run_main.pl") See docs here: http://cmake.org/cmake/help/cmake-2-8-docs.html#command:set_property http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:IMPORTED_LOCATION HTH, David On Thu, Nov 10, 2011 at 3:00 PM, EXT-York, Gantry wrote: > When I do an > > > > add_executable( run_main.pl IMPORTED) > > add_test( test1 run_main.pl) > > > > How does it know where run_main.pl is located when you do an out of source > build? > > > > It seems to look in > > . > > Releases > > Debug > > MinSizeRel > > RelWithDebInfo > > Deployment > > Development > > > > which are directories that I don’t even see existing. > > > > And if run_main.pl is just > > > > #!/usr/bin/perl > > system “ ../exec/main” > > > > > > How does it know if ../exec/main is in the src tree or the build tree? If > main is a C binary, it would be in the build tree, if it is just a script it > would be in the source tree. > > > > > > > > > > Gantry York > > Chandler, Arizona > > > > -- > > 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 > -- 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