我有一个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)
有人提示如何处理这个问题吗?我不想总是建立单元测试!
答案 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
目标,而默认情况下它永远不会构建。有关替代方法,请参阅注释。