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 _______________________________________________ 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