On 9/5/2017 2:47 AM, Dvir Yitzchaki wrote:
There's already CheckCXXSourceCompiles and friends.
The only problem is that try_compile is not scriptable otherwise you could let
the test invoke
${CMAKE_COMMAND} -P check_source_compiles.cmake.
To put it succinctly CMake should adding compile-time testing so that
when some compilation succeeds the test is successful and if the
compilation fails the test is not successful, with the proviso that you
can reverse the result as a compile should fail type of test. Similarly
a build type testing, without having to run anything should be added
along the same lines.
In modern C++ it is perfectly feasible, especially with template
programming, to do compile time testing, invoking a compile-time static
assert as a compile-time failure. Boost has had this for years and
modern C++ has it as part of the latest version of the C++ standard.
CMake needs to update itself to the reality that pure compile-time
testing is a reality for modern C++ and should update itself
accordingly. Only having run-time testing is an artifact of the past.
Hopefully CMake developers will get the message and make the necessary
update to CMake/CTest.
-----Original Message-----
From: CMake [mailto:cmake-boun...@cmake.org] On Behalf Of Roger Leigh
Sent: Monday, September 4, 2017 16:51
To: cmake@cmake.org
Subject: Re: [CMake] Adding compile and build type tests to CMake/CTest
On 04/09/17 14:40, Edward Diener wrote:
Boost Build has tests for running an application successfully or not,
for compiling one or more source files successfully or not, and for
building one or more source files into an exe or not. These tests in
Boost Build are the run/run-fail, compile/compile-fail, and
link/link-fail rules.
CMake/CTest has the exact equivalent to the run/run-fail rule in its
add_test framework, but there is not add_test equivalent to the other
two sets of rules. It sure would be nice, when Boost transitions to
using CMake/CTest instead of Boost Build, if CMake/CTest had the
equivalent of the other two sets of types of test in its add_test
framework.
Is there any consensus that these other two types of tests might be
valuable for CMake/CTest, or any way to make this happen ?
I've certainly wished for them. Particularly when testing templated code where
you want to test that certain things fail correctly, e.g. via static_assert or
simply being invalid.
I understand it's possible to make this work partially, by creating targets
which aren't built by default, and then add tests which invoke the targets.
But this appears to have some caveats, such as potential misbehaviour with
parallel testing. Or you can have a separate CMake build for each individual
target, but it's extra complexity. Having a proper means of registering such
tests would be very, very nice.
Regards,
Roger
--
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:
http://public.kitware.com/mailman/listinfo/cmake