如何配置cmake以在默认情况下获取可执行文件

时间:2013-12-10 16:40:26

标签: cmake

我有一个cmake的小项目。我构建了一个lib和一个可执行文件。在开发机器上我还想要一个无法在其他机器/环境上构建的可执行文件。

e.g:

<my-lib>
 | -- CMakeLists.txt
 |
 + -- src/             -> build the lib/archive
 |     |-- lib.c
 |     |-- lib.h
 |     |-- CMakeLists.txt
 |
 + -- tool             -> build the tool
 |     |-- tool.c
 |     |-- CMakeLists.txt
 |
 + -- tests            -> build the unit tests
 |     |-- tests.c
 |     |-- CMakeLists.txt

我在所有目录中添加了CMakeLists.txt。对测试也是add_executable。现在默认构建单元测试可执行文件。但我想将其从默认目标中排除。

CMakeLists.txt中的

tests

find_library (CUNIT_LIB cunit)
include_directories (${Cunit_INCLUDE_DIRS} "${PROJECT_SOURCE_DIR}/src")

set (CMAKE_C_FLAGS "-O2 -Wall -Werror")

add_executable (unit-test tests.c)

target_link_libraries (unit-test my-lib cunit)

有人提示如何处理这个问题吗?我不想总是建立单元测试!

2 个答案:

答案 0 :(得分:2)

此任务有一个属性EXCLUDE_FROM_ALL

你可以写:

$('[id^="box-content-"]').click(function () {//one single event for all your languages
    var lang = this.id.split('-')[2];//get the lang from the id 
    switchLang('menu', lang);//call the function
});

答案 1 :(得分:1)

这非常简单:通过引入选项/变量来保护可执行文件的创建。

if (DEFINED WITH_UNIT_TEST)
  find_library (CUNIT_LIB cunit)
  include_directories (${Cunit_INCLUDE_DIRS} "${PROJECT_SOURCE_DIR}/src")

  set (CMAKE_C_FLAGS "-O2 -Wall -Werror")

  add_executable (unit-test tests.c)

  target_link_libraries (unit-test my-lib cunit)
endif ()

现在,在调用CMake时,必须明确指定-DWITH_UNIT_TEST,以便构建unit-test目标,而默认情况下它永远不会构建。有关替代方法,请参阅注释。