2017-03-31 4:41 GMT+02:00 kipade <kip...@163.com>: > There are some files I do not want to build if the specified condition was > ture. > For example, for testing, I want build a new file witch include a main > entry just > for testing; if not, a new file would be compile for normal task. > I do not want to write two main entries in the same file just using macros > to > control compiling. I want to use different clean and simple files. > So, how to do it? >
You can either use generator expressions: ------------------------- cmake_minimum_required(VERSION 3.5) project(dependent CXX) set(MY_DEPEND "ON" CACHE BOOL "toggle feature") add_executable( ${PROJECT_NAME} main.cpp $<$<BOOL:${MY_DEPEND}>:first/a.cpp> $<$<NOT:$<BOOL:${MY_DEPEND}>>:second/a.cpp> ) target_include_directories( ${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" ) ------------------------- Or add files to a variable: ------------------------- cmake_minimum_required(VERSION 3.5) project(dependent CXX) set(MY_DEPEND "ON" CACHE BOOL "toggle feature") if(MY_DEPEND) set(extra_src_ "first/a.cpp") else() set(extra_src_ "second/a.cpp") endif() add_executable( ${PROJECT_NAME} main.cpp ${extra_src_} ) target_include_directories( ${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" ) ------------------------- Regards, Domen
-- 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