On 9 July 2010 22:39, Michael Wild <them...@gmail.com> wrote: > > On 9. Jul, 2010, at 15:48 , Michael Hertling wrote: > > > On 07/08/2010 09:47 AM, Paul Harris wrote: > >> On 8 July 2010 15:31, Michael Wild <them...@gmail.com> wrote: > >> > >>> > >>> On 8. Jul, 2010, at 7:25 , Paul Harris wrote: > >>> > >>>> On 8 July 2010 12:56, Michael Wild <them...@gmail.com> wrote: > >>>> > >>>>> > >>>>> On 8. Jul, 2010, at 4:40 , Paul Harris wrote: > >>>>> > >>>>>> On 7 July 2010 23:05, Michael Wild <them...@gmail.com> wrote: > >>>>>> > >>>>>>> > >>>>>>> On 7. Jul, 2010, at 16:01 , Paul Harris wrote: > >>>>>>> > >>>>>>>> Hi all, > >>>>>>>> > >>>>>>>> I have looked and can't find the answer, so I turn to the list. > >>>>>>>> > >>>>>>>> I have a CMakeLists.txt and a subdirectory called utils, which > also > >>> has > >>>>>>> its > >>>>>>>> own CMakeLists.txt > >>>>>>>> > >>>>>>>> In the parent CML.txt, I have something like: > >>>>>>>> > >>>>>>>> ENABLE_TESTING() > >>>>>>>> add_subdirectory(utils) > >>>>>>>> > >>>>>>>> In my utils CML.txt, I have > >>>>>>>> > >>>>>>>> ADD_EXECUTABLE(unit_1 units/unit_1.cpp) > >>>>>>>> ADD_TEST( unit_1 ${EXECUTABLE_OUTPUT_PATH}/unit_1 ) > >>>>>>>> > >>>>>>> > >>>>>>> Simplify this to > >>>>>>> > >>>>>>> ADD_TEST(unit_1 unit_1) > >>>>>>> > >>>>>>> CMake will figure out by itself that unit_1 is a target and invoke > the > >>>>>>> executable correctly (your code would break for multi-configuration > >>> IDE > >>>>>>> generators). > >>>>>>> > >>>>>>> > >>>>>> This does not work for me. If I do not have the > EXECUTABLE_OUTPUT_PATH > >>>>> in > >>>>>> add_test, I get a message like this when i run "make test" > (shortened > >>> for > >>>>>> brevity): > >>>>>> > >>>>>> 1/ 1 Testing unit_string_numeric_utils Could not find > executable > >>>>>> unit_string_numeric_utils > >>>>>> Looked in the following places: > >>>>>> unit_string_numeric_utils > >>>>>> unit_string_numeric_utils > >>>>>> Release/unit_string_numeric_utils > >>>>>> Release/unit_string_numeric_utils > >>>>> > >>>>> Mmmh, works fine for me: > >>>>> > >>>>> --------->8--------- > >>>>> cmake_minimum_required(VERSION 2.8) > >>>>> project(tmp) > >>>>> > >>>>> enable_testing() > >>>>> > >>>>> add_executable(unit1 unit1.cpp) > >>>>> add_test(unit1 unit1) > >>>>> ---------<8--------- > >>>>> > >>>>> Where unit1.cpp is just a simple hello-world program. Running it: > >>>>> > >>>>> > >>>> snip > >>>> > >>>> My project is a lot bigger than a hello-world program. It has > >>>> subdirectories for a start, and I do things like > >>>> SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL > >>> "Single > >>>> output directory for building all executables.") > >>>> > >>>> I'm not sure at which point things stop working, do you want me to try > >>> and > >>>> build a test-case? > >>> > >>> You are right, it seems that the documentation is misleading (or IMHO > >>> outright wrong). This, however, works for me and is safe: > >>> > >>> add_test(NAME unit1 COMMAND $<TARGET_FILE:unit1>) > >>> > >>> Note that NAME and COMMAND are required for this to work. > >>> > >>> BTW: EXECUTABLE_OUTPUT_PATH is deprecated, you should use > >>> CMAKE_RUNTIME_OUTPUT_DIRECTORY instead. > >>> > >>> > >> I changed EXE to that CMAKE RUNTIME thing, thanks. > >> > >> That NAME/COMMAND thing doesn't work for me at all. Can't find the > binary > >> without the runtime output path explicitly added. > >> > >> This is what I tried: > >> > >> In parent CMakeLists.txt > >> > >> ENABLE_TESTING() > >> > >> set (CMAKE_TEST_COMMAND ctest -V) > >> > >> function (add_unit_test name) > >> if(NOT TARGET ${name}) > >> add_custom_target (check COMMAND ${CMAKE_TEST_COMMAND}) > >> endif() > >> add_executable(${name} ${ARGN}) > >> add_test(NAME ${name} COMMAND $<TARGET_FILE:${name}>) > >> add_dependencies(check ${name}) > >> endfunction() > >> > >> > >> in subdirectory CMakeLists.txt > >> add_unit_test(unit_string_numeric_utils > units/unit_string_numeric_utils.cpp > >> string_numeric_utils.cpp) > > > > Could you detect manually where the binary in question gets written > > to, and post ctest's output with the complaint about not finding it, > > and perhaps you could also post a minimal CMakeLists.txt file which > > demonstrates this issue along with the output of "make VERBOSE=1"? > > > > Regards, > > > > Michael > > I suspect he's using a pre-2.8 version of CMake. I confirmed that add_test > only resolves executable target names if used with NAME and COMMAND, and > this signature was introduced in 2.8. > > I'm using 2.8.1 Michael Hertling - do you still want me to follow up as you asked?
_______________________________________________ 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