Search code examples
c++buildcmakebuild-system

CMake How to check target for build


I have tried to find solution: How to check target for build ?

Consider the following CMake script:

cmake_minimum_required(VERSION 3.5.1)
project(cppTests)

# How to check at this point the target of build
if(TARGET "cppTests")
    message(STATUS "Target is cppTests")
else()
    message(STATUS "Target is not cppTests")
endif()


message(STATUS "Target is ${TARGET}")
set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)
add_executable(cppTests ${SOURCE_FILES})

Then I call the following:

/home/username/Software/clion-2017.1.1/bin/cmake/bin/cmake --build /home/username/Projects/cppTests/cmake-build-debug --target cppTests -- -j 8

How can I check target cppTests in CMake script after --target options ? I am looking for something like MAKECMDGOALS in Makefiles. I have found any useful solution ...


Solution

  • I have found a solution:

    add_custom_command(
            OUTPUT fidl_files_generated
            DEPENDS "./interfaces/*.fidl"
            COMMAND touch fidl_files_generated
            COMMAND /home/redra/Projects/Automotive/cgen/commonapi-generator/commonapi-generator-linux-x86_64 -sk ../interfaces/ *.fidl
            COMMAND /home/redra/Projects/Automotive/cgen/commonapi_dbus_generator/commonapi-dbus-generator-linux-x86_64 ../interfaces/ *.fidl
    )
    
    add_custom_target(fidl_gen
                      DEPENDS fidl_files_generated)
    
    set(GENERATED_FILES "../cmake-build-debug/src-gen/v1/commonapi/HelloWorldDBusProxy.cpp"
                        "../cmake-build-debug/src-gen/v1/commonapi/HelloWorldDBusDeployment.cpp"
                        "../cmake-build-debug/src-gen/v1/commonapi/HelloWorldDBusStubAdapter.cpp"
                        "../cmake-build-debug/src-gen/v1/commonapi/HelloWorldStubDefault.cpp"
                        "../cmake-build-debug/src-gen/v1/commonapi/HelloWorldDBusDeployment.cpp")
    set_source_files_properties(${GENERATED_FILES} PROPERTIES GENERATED TRUE)
    
    add_executable(
            CommonAPI_Server
            ${SOURCE_FILES}
            ${GENERATED_FILES})
    add_dependencies(CommonAPI_Server fidl_gen)
    

    Thanks all for support !!

    Special thanks to Angew for support and help !!!!