[CMake] test depending on code compilation

Franck Houssen franck.houssen at inria.fr
Thu Jan 11 02:56:04 EST 2018


OK, so I guess there is no way to do that like with autotools... 

----- Mail original -----

> De: "Franck Houssen" <franck.houssen at inria.fr>
> À: "CMake Mail List" <cmake at cmake.org>
> Envoyé: Mercredi 10 Janvier 2018 12:22:39
> Objet: Re: [CMake] test depending on code compilation

> I tried to reduce the example:

> >> ls
> CMakeLists.txt main.cpp mytest.cpp mytest.sh

> >> more *
> ::::::::::::::
> CMakeLists.txt
> ::::::::::::::
> cmake_minimum_required(VERSION 3.7)
> enable_language(CXX)

> project(main)
> add_executable(main main.cpp)
> add_executable(mytestcpp mytest.cpp)

> include(CTest)
> enable_testing()
> configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mytest.sh"
> "${CMAKE_CURRENT_BINARY_DIR}/mytest.sh")
> add_test(NAME mytestsh COMMAND ./mytest.sh WORKING_DIRECTORY
> "${CMAKE_CURRENT_BINARY_DIR}")

> add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} DEPENDS mytestcpp)
> ::::::::::::::
> main.cpp
> ::::::::::::::
> int main() {return 0;}
> ::::::::::::::
> mytest.cpp
> ::::::::::::::
> int main() {return 0;}
> ::::::::::::::
> mytest.sh
> ::::::::::::::
> #!/bin/bash
> exit 0

> I want make to build only main => KO
> >> make
> [ 50%] Built target main
> [100%] Built target mytestcpp

> I want make check to build mytestcpp and run tests => OK but verbose is KO.
> >> make check ARGS="-V"
> [100%] Built target mytestcpp
> Test project /tmp/BUILD
> Start 1: mytestsh
> 1/1 Test #1: mytestsh ......................... Passed 0.00 sec

> I want make test to run test only => OK and verbose is OK.

> ----- Mail original -----

> > De: "Franck Houssen" <franck.houssen at inria.fr>
> 
> > À: "CMake Mail List" <cmake at cmake.org>
> 
> > Envoyé: Mercredi 10 Janvier 2018 10:47:34
> 
> > Objet: [CMake] test depending on code compilation
> 

> > I need to design a test (= a bash script) such that :
> 
> > 1) run a dedicated executable for the test (to be compiled)
> 
> > 2) diff the run output with a reference log file
> 

> > The test is created with : add_test(mytest ./mytest.sh). The bash script
> > would look like:
> 
> > >> more mytest.sh
> 
> > /path/to/mytestexe > out.log
> 
> > diff out.log out.ref
> 

> > The dedicated executable for the test is created with :
> > add_executable(mytestexe mytestexe.cpp)
> 

> > Ideally, I would like mytestexe to be compiled when I type "make test"
> > (before to run the test) but not "make".
> 

> > Seems impossible to add a dependencie with : add_dependencies(mytest
> > mytestexe). I googled this and found
> > https://stackoverflow.com/questions/733475/cmake-ctest-make-test-doesnt-build-tests
> > but this was not really clear to me...I added : add_custom_target(check
> > COMMAND ${CMAKE_CTEST_COMMAND} DEPENDS mytestexe).
> 

> > The 2 unexpected problems I have left are:
> 
> > 1) mytestexe is compiled everytime I type "make" which is a solution but is
> > not really what I am looking for (also compiled when I type "make check"
> > which is expected).
> 
> > => is there a way for make not to compile mytestexe (note I didn't added
> > ALL
> > in add_custom_target so I am not sure to know why make builds mytestexe)
> 
> > 2) Also the verbosity is broken with check : make test ARGS="-V" is verbose
> > ,
> > but, make check ARGS="-V" is not.
> 
> > => how to deal with that ?
> 

> > --
> 

> > Powered by www.kitware.com
> 

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

> > Kitware offers various services to support the CMake community. For more
> > information on each offering, please visit:
> 

> > CMake Support: http://cmake.org/cmake/help/support.html
> 
> > CMake Consulting: http://cmake.org/cmake/help/consulting.html
> 
> > CMake Training Courses: http://cmake.org/cmake/help/training.html
> 

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

> > Follow this link to subscribe/unsubscribe:
> 
> > https://cmake.org/mailman/listinfo/cmake
> 

> --

> Powered by www.kitware.com

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

> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:

> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html

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

> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180111/08a59cd9/attachment.html>


More information about the CMake mailing list