Hi CMake experts,

I want to use CMake build system for large projects, which will uses different 
toolchains.

Let’s take one simple example:

There are two project, one is using the arm cross toolchain, another one is 
using the dsp toolchain.


cmake_projects/
├── CMakeLists.txt
├── arm_project
│   └── CMakeLists.txt
├── arm_project2
│   └── CMakeLists.txt
├── dsp_project
│   └── CMakeLists.txt
└── dsp_project2
    └── CMakeLists.txt


Inside the cmake_projects/CMakeLists.txt:

add_subdirectory(arm_project)

add_subdirectory(arm_project2)

add_subdirectory(dsp_project)

add_subdirectory(dsp_project2)


Then, I want to build it:

mkdir build
cd build && cmake -DCMAKE_TOOLCHAIN_FILE=<which_toolchain> ../


You know that the CMAKE_TOOLCHAIN_FILE needs to be specified along with cmake 
command line, so in above example what’s the <which_toolchain> should be ?

Yes, there might be another solution:


cmake_projects/
├── CMakeLists.txt
├── arm
│   └── CMakeLists.txt
├── dsp
│   └── CMakeLists.txt

├── arm_project
│   └── CMakeLists.txt
├── arm_project2
│   └── CMakeLists.txt
├── dsp_project
│   └── CMakeLists.txt
└── dsp_project2
    └── CMakeLists.txt


so that inside arm/CMakeLists.txt


add_subdirectory(arm_project)
add_subdirectory(arm_project2)


and inside dsp/CMakeLists.txt


add_subdirectory(dsp_project)
add_subdirectory(dsp_project2)


Then, build it with

mkdir build_arm
cd build_arm && cmake -DCMAKE_TOOLCHAIN_FILE=<arm_toolchain_now> ../arm

mkdir build_dsp
cd build_dsp && cmake -DCMAKE_TOOLCHAIN_FILE=<dsp_toolchain_now> ../dsp


But this way I need to sperate the arm and dsp build folder structure, but 
logically I need to keep the build folder structure as same as source code.

Or, let developer don’t be aware of the toolchain difference it’s just choosing 
the right one…

But if it’s supporting specifying the CMAKE_TOOLCHAIN_FILE inside the 
CMakeLists.txt, it might solving this problem.

Any suggestions or ideas ? Thanks in advanced.

Thanks,
Song
-- 

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

Reply via email to